From dc1bda37ce7b3b8e1fd89771f20603ad763fe174 Mon Sep 17 00:00:00 2001 From: Deepak Thapa Date: Mon, 31 May 2021 10:01:21 +0545 Subject: [PATCH 01/24] Initial script for automation script. --- connect-automation/README.md | 39 + connect-automation/conf.ts | 76 + connect-automation/config/app-config.json | 18 + connect-automation/config/config.json | 26 + connect-automation/logger/logger.ts | 4 + connect-automation/package-lock.json | 6660 +++++++++++++++++ connect-automation/package.json | 45 + .../page-objects/common-page/common.helper.ts | 327 + .../page-objects/login/login.helper.ts | 42 + .../page-objects/login/login.po.ts | 90 + .../create-new-phase.helper.ts | 109 + .../create-new-phase.model.ts | 7 + .../create-new-phase/create-new-phase.po.ts | 78 + .../profile-update/footer/footer.helper.ts | 25 + .../profile-update/footer/footer.po.ts | 10 + .../left-menu/left-menu.helper.ts | 72 + .../profile-update/left-menu/left-menu.po.ts | 55 + .../my-profile/my-profile.helper.ts | 243 + .../my-profile/my-profile.model.ts | 14 + .../my-profile/my-profile.po.ts | 195 + .../user-profile-menu.helper.ts | 58 + .../user-profile-menu/user-profile-menu.po.ts | 38 + .../create-project/create-project.helper.ts | 194 + .../create-project/create-project.model.ts | 15 + .../create-project/create-project.po.ts | 148 + .../invite-copilot/invite-copilot.helper.ts | 60 + .../invite-copilot/invite-copilot.po.ts | 66 + .../projects/projects.helper.ts | 159 + .../projects/projects.model.ts | 5 + .../projects/projects.po.ts | 110 + connect-automation/temp/conf.js | 59 + .../temp/config/app-config.json | 17 + connect-automation/temp/config/config.json | 26 + connect-automation/temp/logger/logger.js | 8 + .../page-objects/common-page/common.helper.js | 514 ++ .../temp/page-objects/login/login.helper.js | 114 + .../temp/page-objects/login/login.po.js | 176 + .../create-new-phase.helper.js | 220 + .../create-new-phase.model.js | 3 + .../create-new-phase/create-new-phase.po.js | 137 + .../profile-update/footer/footer.helper.js | 73 + .../profile-update/footer/footer.po.js | 21 + .../left-menu/left-menu.helper.js | 177 + .../profile-update/left-menu/left-menu.po.js | 135 + .../my-profile/my-profile.helper.js | 449 ++ .../my-profile/my-profile.model.js | 3 + .../my-profile/my-profile.po.js | 322 + .../user-profile-menu.helper.js | 157 + .../user-profile-menu/user-profile-menu.po.js | 61 + .../create-project/create-project.helper.js | 405 + .../create-project/create-project.model.js | 3 + .../create-project/create-project.po.js | 252 + .../invite-copilot/invite-copilot.helper.js | 152 + .../invite-copilot/invite-copilot.po.js | 127 + .../projects/projects.helper.js | 333 + .../projects/projects.model.js | 3 + .../projects/projects.po.js | 207 + .../temp/test-data/test-data.json | 46 + .../create-new-phase.spec.js | 98 + .../profile-update/footer-menu.spec.js | 90 + .../profile-update/left-menu.spec.js | 109 + .../profile-update/my-profile.spec.js | 116 + .../profile-update/user-profile-menu.spec.js | 99 + .../create-project.spec.js | 98 + .../invite-copilot.spec.js | 98 + .../project-creation-flow/projects.spec.js | 136 + .../temp/utils/config-helper.js | 97 + .../_Connect Automation Smoke Test Plan.xlsx | Bin 0 -> 30305 bytes ...~$_Connect Automation Smoke Test Plan.xlsx | Bin 0 -> 165 bytes connect-automation/test-data/test-data.json | 46 + .../create-new-phase.spec.ts | 34 + .../profile-update/footer-menu.spec.ts | 32 + .../profile-update/left-menu.spec.ts | 38 + .../profile-update/my-profile.spec.ts | 41 + .../profile-update/user-profile-menu.spec.ts | 35 + .../create-project.spec.ts | 32 + .../invite-copilot.spec.ts | 32 + .../project-creation-flow/projects.spec.ts | 55 + connect-automation/tsconfig.json | 27 + connect-automation/tslint.json | 3 + connect-automation/utils/config-helper.ts | 108 + 81 files changed, 14612 insertions(+) create mode 100644 connect-automation/README.md create mode 100644 connect-automation/conf.ts create mode 100644 connect-automation/config/app-config.json create mode 100644 connect-automation/config/config.json create mode 100644 connect-automation/logger/logger.ts create mode 100644 connect-automation/package-lock.json create mode 100644 connect-automation/package.json create mode 100644 connect-automation/page-objects/common-page/common.helper.ts create mode 100644 connect-automation/page-objects/login/login.helper.ts create mode 100644 connect-automation/page-objects/login/login.po.ts create mode 100644 connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts create mode 100644 connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.ts create mode 100644 connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.ts create mode 100644 connect-automation/page-objects/profile-update/footer/footer.helper.ts create mode 100644 connect-automation/page-objects/profile-update/footer/footer.po.ts create mode 100644 connect-automation/page-objects/profile-update/left-menu/left-menu.helper.ts create mode 100644 connect-automation/page-objects/profile-update/left-menu/left-menu.po.ts create mode 100644 connect-automation/page-objects/profile-update/my-profile/my-profile.helper.ts create mode 100644 connect-automation/page-objects/profile-update/my-profile/my-profile.model.ts create mode 100644 connect-automation/page-objects/profile-update/my-profile/my-profile.po.ts create mode 100644 connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.ts create mode 100644 connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.po.ts create mode 100644 connect-automation/page-objects/project-creation-flow/create-project/create-project.helper.ts create mode 100644 connect-automation/page-objects/project-creation-flow/create-project/create-project.model.ts create mode 100644 connect-automation/page-objects/project-creation-flow/create-project/create-project.po.ts create mode 100644 connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.ts create mode 100644 connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.ts create mode 100644 connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts create mode 100644 connect-automation/page-objects/project-creation-flow/projects/projects.model.ts create mode 100644 connect-automation/page-objects/project-creation-flow/projects/projects.po.ts create mode 100644 connect-automation/temp/conf.js create mode 100644 connect-automation/temp/config/app-config.json create mode 100644 connect-automation/temp/config/config.json create mode 100644 connect-automation/temp/logger/logger.js create mode 100644 connect-automation/temp/page-objects/common-page/common.helper.js create mode 100644 connect-automation/temp/page-objects/login/login.helper.js create mode 100644 connect-automation/temp/page-objects/login/login.po.js create mode 100644 connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js create mode 100644 connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js create mode 100644 connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js create mode 100644 connect-automation/temp/page-objects/profile-update/footer/footer.helper.js create mode 100644 connect-automation/temp/page-objects/profile-update/footer/footer.po.js create mode 100644 connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js create mode 100644 connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js create mode 100644 connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js create mode 100644 connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js create mode 100644 connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js create mode 100644 connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js create mode 100644 connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js create mode 100644 connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js create mode 100644 connect-automation/temp/test-data/test-data.json create mode 100644 connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js create mode 100644 connect-automation/temp/test-suites/profile-update/footer-menu.spec.js create mode 100644 connect-automation/temp/test-suites/profile-update/left-menu.spec.js create mode 100644 connect-automation/temp/test-suites/profile-update/my-profile.spec.js create mode 100644 connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js create mode 100644 connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js create mode 100644 connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js create mode 100644 connect-automation/temp/test-suites/project-creation-flow/projects.spec.js create mode 100644 connect-automation/temp/utils/config-helper.js create mode 100644 connect-automation/test-cases/_Connect Automation Smoke Test Plan.xlsx create mode 100644 connect-automation/test-cases/~$_Connect Automation Smoke Test Plan.xlsx create mode 100644 connect-automation/test-data/test-data.json create mode 100644 connect-automation/test-suites/phase-creation-flow/create-new-phase.spec.ts create mode 100644 connect-automation/test-suites/profile-update/footer-menu.spec.ts create mode 100644 connect-automation/test-suites/profile-update/left-menu.spec.ts create mode 100644 connect-automation/test-suites/profile-update/my-profile.spec.ts create mode 100644 connect-automation/test-suites/profile-update/user-profile-menu.spec.ts create mode 100644 connect-automation/test-suites/project-creation-flow/create-project.spec.ts create mode 100644 connect-automation/test-suites/project-creation-flow/invite-copilot.spec.ts create mode 100644 connect-automation/test-suites/project-creation-flow/projects.spec.ts create mode 100644 connect-automation/tsconfig.json create mode 100644 connect-automation/tslint.json create mode 100644 connect-automation/utils/config-helper.ts diff --git a/connect-automation/README.md b/connect-automation/README.md new file mode 100644 index 000000000..880095018 --- /dev/null +++ b/connect-automation/README.md @@ -0,0 +1,39 @@ +# Topcoder Connect App - E2E Tests + +#### Software Required + +Nodejs v8.11.4+ +Chrome Browser + +#### Installation: + +- Installs + `npm install` + +- To run tests + `cd connect-app-e2e-test` + `npm run test` + +- Test results are generated in test-results/ folder + +``` +HTML report - TestResult.html +Junit report - junitresults-TopcoderLoginPageTests.xml and junitresults-TopcoderRegistrationPageTests.xml +``` + +- To view junit reports into html, install xunit-viewer + `npm i -g xunit-viewer` + +- HTML report from Junit reports can be generated using this command + `xunit-viewer --results=test-results/ --output=/home/Documents/` + +As of now, the tests are running in headless mode. To view the actual chrom browser running the tests, you can remove `--headless` option from `chromeOptions.args` in `config.ts` + +#### Test Datas: + +- Test datas are located in /test-data/test-data.json file + +#### Configuration details: + +- config.json holds the data level configuration, like user credentials etc +- conf.ts holds the application configuration, like jasmine reporters to be configured, specs to be run etc. diff --git a/connect-automation/conf.ts b/connect-automation/conf.ts new file mode 100644 index 000000000..6169fc1b3 --- /dev/null +++ b/connect-automation/conf.ts @@ -0,0 +1,76 @@ +import reporters = require('jasmine-reporters'); +import HtmlReporter = require('protractor-beautiful-reporter'); +import { BrowserHelper } from 'topcoder-testing-lib'; + +declare global { + namespace NodeJS { + interface IGlobal { + document: Document; + window: Window; + navigator: Navigator; + forgotPasswordMailListener: any; + registrationMailListener: any; + } + } +} + +exports.config = { + directConnect: true, + + // Capabilities to be passed to the webdriver instance. + capabilities: { + browserName: 'chrome', + chromeOptions: { + args: [ + '--headless', + '--disable-gpu', + '--no-sandbox', + '--window-size=1325x744', + ], + }, + }, + + // Framework to use. Jasmine is recommended. + framework: 'jasmine2', + + specs: [ + '../temp/test-suites/profile-update/my-profile.spec.js', + '../temp/test-suites/profile-update/left-menu.spec.js', + '../temp/test-suites/profile-update/user-profile-menu.spec.js', + '../temp/test-suites/profile-update/footer-menu.spec.js', + '../temp/test-suites/project-creation-flow/create-project.spec.js', + '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', + '../temp/test-suites/project-creation-flow/projects.spec.js', + '../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' + ], + + // Options to be passed to Jasmine. + jasmineNodeOpts: { + defaultTimeoutInterval: 1200000, // 20 minutes + isVerbose: true, + showColors: true, + }, + + onPrepare: () => { + BrowserHelper.maximize(); + BrowserHelper.implicitlyWait(5000); + const junitReporter = new reporters.JUnitXmlReporter({ + consolidateAll: false, + savePath: 'test-results', + }); + jasmine.getEnv().addReporter(junitReporter); + jasmine.getEnv().addReporter( + new HtmlReporter({ + baseDirectory: 'test-results', + docName: 'TestResult.html', // Change html report file name + docTitle: 'Test Automation Execution Report', // Add title for the html report + gatherBrowserLogs: true, // Store Browser logs + jsonsSubfolder: 'jsons', // JSONs Subfolder + preserveDirectory: false, // Preserve base directory + screenshotsSubfolder: 'screenshots', + takeScreenShotsForSkippedSpecs: true, // Screenshots for skipped test cases + takeScreenShotsOnlyForFailedSpecs: true, // Screenshots only for failed test cases + }).getJasmine2Reporter() + ); + }, +}; diff --git a/connect-automation/config/app-config.json b/connect-automation/config/app-config.json new file mode 100644 index 000000000..fd59eb6fa --- /dev/null +++ b/connect-automation/config/app-config.json @@ -0,0 +1,18 @@ +{ + "Timeout": { + "FieldVisibility": 15000, + "ElementVisibility": 15000, + "ElementInvisibility": 15000, + "ElementPresence": 15000, + "ElementClickable": 15000, + "PageLoad": 300000 + }, + + "LoggerErrors": { + "ElementVisibilty": "Element did not display within timeout", + "ElementInvisibilty": "Element did not become invisible within timeout", + "ElementPresence": "Element was not present within timeout", + "ElementClickable": "Element was not clickable within timeout", + "PageLoad": "Page did not load within timeout" + } +} diff --git a/connect-automation/config/config.json b/connect-automation/config/config.json new file mode 100644 index 000000000..c5bcaa0f6 --- /dev/null +++ b/connect-automation/config/config.json @@ -0,0 +1,26 @@ +{ + "env": "dev", + "username": "mailmemakar402", + "password": "P@ssw0rd", + "customerRole": { + "email": "topcoderconnect+Customer@gmail.com", + "password": "appirio123" + }, + "copilotRole": { + "email": "topcoderconnect+Copilot@gmail.com", + "password": "appirio123" + }, + "copilotManagerRole": { + "email": "topcoderconnect+CopilotManager@gmail.com", + "password": "appirio123" + }, + "homePageUrl": "https://connect.topcoder-dev.com/", + "loginUrl": "https://auth.topcoder-dev.com", + "redirectLoginUrl": "https://accounts-auth0.topcoder-dev.com/?regSource=tcBusiness&retUrl=https://connect.topcoder-dev.com", + "logoutUrl": "https://accounts-auth0.topcoder-dev.com/?logout=true&retUrl=https://connect.topcoder-dev.com", + "myProfileUrl": "https://connect.topcoder-dev.com/settings/profile", + "notificationSettingsUrl": "https://connect.topcoder-dev.com/settings/notifications", + "accountAndSecurityUrl": "https://connect.topcoder-dev.com/settings/account", + "notificationsUrl": "https://connect.topcoder-dev.com/notifications", + "allProjectsUrl": "https://connect.topcoder-dev.com/projects" +} diff --git a/connect-automation/logger/logger.ts b/connect-automation/logger/logger.ts new file mode 100644 index 000000000..a4e578a88 --- /dev/null +++ b/connect-automation/logger/logger.ts @@ -0,0 +1,4 @@ +import { createLogger, transports } from "winston"; +export const logger = createLogger({ + transports: [new transports.Console()] +}); diff --git a/connect-automation/package-lock.json b/connect-automation/package-lock.json new file mode 100644 index 000000000..e9d505299 --- /dev/null +++ b/connect-automation/package-lock.json @@ -0,0 +1,6660 @@ +{ + "name": "connect-app-e2e-test", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "connect-app-e2e-test", + "version": "1.0.0", + "dependencies": { + "@types/node": "^12.7.8", + "exceljs": "^4.2.0", + "jasmine": "^3.4.0", + "jasmine-reporters": "^2.3.2", + "jsdom": "^15.1.1", + "lodash": "^4.17.19", + "mail-listener2": "^0.3.1", + "moment": "^2.29.1", + "papaparse": "^5.3.0", + "protractor": "^7.0.0", + "protractor-beautiful-reporter": "^1.2.8", + "topcoder-testing-lib": "git+https://github.com/topcoder-platform/topcoder-testing-lib.git#develop", + "tslint-config-prettier": "^1.18.0", + "typescript": "^3.5.3", + "webdriver-manager": "^12.1.7", + "winston": "^3.2.1" + }, + "devDependencies": { + "@types/jasmine": "^3.3.16", + "@types/jasminewd2": "^2.0.6", + "@types/lodash": "^4.14.159", + "rimraf": "^2.6.3", + "tslint": "^5.18.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/format/node_modules/@types/node": { + "version": "14.14.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", + "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==" + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.14.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", + "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==" + }, + "node_modules/@types/jasmine": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.3.tgz", + "integrity": "sha512-5QKAG8WfC9XrOgYLXPrxv1G2IIUE6zDyzTWamhNWJO0LqPRUbZ0q0zGHDhDJ7MpFloUuyME/jpBIdPjq3/P3jA==", + "dev": true + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "dev": true, + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.168", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", + "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==", + "dev": true + }, + "node_modules/@types/node": { + "version": "12.19.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.16.tgz", + "integrity": "sha512-7xHmXm/QJ7cbK2laF+YYD7gb5MggHIIQwqyjin3bpEGiSuvScMQ5JZZXPvRipi1MwckTQbJZROMns/JxdnIL1Q==" + }, + "node_modules/@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=" + }, + "node_modules/@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==" + }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/addressparser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", + "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=" + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archiver": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.2.0.tgz", + "integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.0", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.1.4", + "zip-stream": "^4.0.4" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "node_modules/bl": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.4.tgz", + "integrity": "sha512-7tdr4EpSd7jJ6tuQ21vu2ke8w7pNEstzj1O8wwq6sNNzO3UDi5MA8Gny/gquCj7r2C6fHudg8tKRGyjRgmvNxQ==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "blocking-proxy": "built/lib/bin.js" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/browserstack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", + "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", + "dependencies": { + "https-proxy-agent": "^2.2.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + } + }, + "node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dependencies": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/compress-commons": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.0.2.tgz", + "integrity": "sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" + }, + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "node_modules/del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dependencies": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exceljs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.2.0.tgz", + "integrity": "sha512-r0/ClXRs3cQmMGJOQY6/ymnZSBSzeJL/LjAlKjY75ev1iQgf0LcmeFfTqFTFK0fADLAWieOMXe7abPoGYWI6hA==", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.5.0", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, + "node_modules/fecha": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", + "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dependencies": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz", + "integrity": "sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/imap": { + "version": "0.8.19", + "resolved": "https://registry.npmjs.org/imap/-/imap-0.8.19.tgz", + "integrity": "sha1-NniHOTSrCc6mukh0HyhNoq9Z2NU=", + "dependencies": { + "readable-stream": "1.1.x", + "utf7": ">=1.0.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/imap/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/imap/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/imap/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dependencies": { + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/jasmine": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.6.4.tgz", + "integrity": "sha512-hIeOou6y0BgCOKYgXYveQvlY+PTHgDPajFf+vLCYbMTQ+VjAP9+EQv0nuC9+gyCAAWISRFauB1XUb9kFuOKtcQ==", + "dependencies": { + "glob": "^7.1.6", + "jasmine-core": "~3.6.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/jasmine-core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==" + }, + "node_modules/jasmine-reporters": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz", + "integrity": "sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A==", + "dependencies": { + "mkdirp": "^0.5.1", + "xmldom": "^0.1.22" + } + }, + "node_modules/jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "engines": { + "node": ">= 6.9.x" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "node_modules/jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdom/node_modules/saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/jszip": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/klaw-sync": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-2.1.0.tgz", + "integrity": "sha1-PTvNhgDnv971MjHHOf8FOu1WDkQ=", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "node_modules/lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw=" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "node_modules/logform": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "dependencies": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + } + }, + "node_modules/mail-listener2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/mail-listener2/-/mail-listener2-0.3.1.tgz", + "integrity": "sha1-GBRJfZYy/Y6vTjywg6qQEpZh+ok=", + "dependencies": { + "async": "^0.9.0", + "imap": "~0.8.14", + "mailparser": "~0.4.6" + } + }, + "node_modules/mail-listener2/node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "node_modules/mailparser": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-0.4.9.tgz", + "integrity": "sha1-HQpI1vqqovCawTmO0CPY746xnis=", + "dependencies": { + "encoding": ">=0.1.4", + "mime": "*", + "mimelib": ">=0.2.17", + "uue": "~1.0.0" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mime": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "dependencies": { + "mime-db": "1.45.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimelib": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.3.1.tgz", + "integrity": "sha1-eHrdJBXYJ6yzr27EvKHqlZZBiFM=", + "dependencies": { + "addressparser": "~1.0.1", + "encoding": "~0.1.12" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/papaparse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.0.tgz", + "integrity": "sha512-Lb7jN/4bTpiuGPrYy4tkKoUS8sTki8zacB5ke1p5zolhcSE4TlWgrlsxjrDTbG/dFVh07ck7X36hUf/b5V68pg==" + }, + "node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "dependencies": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "bin": { + "protractor": "bin/protractor", + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=10.13.x" + } + }, + "node_modules/protractor-beautiful-reporter": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/protractor-beautiful-reporter/-/protractor-beautiful-reporter-1.3.6.tgz", + "integrity": "sha512-lALPJJV8li3AqweEfKcXSRBK/QSe82FyB13b1+6NQvrAkE6YyoZ91pYg1ZNUcaZU0HO+pPAmbF4mfW+5FLvieg==", + "dependencies": { + "circular-json": "^0.3.1", + "fs-extra": "^3.0.1", + "klaw-sync": "^2.1.0", + "mkdirp": "~0.3.5" + } + }, + "node_modules/protractor-beautiful-reporter/node_modules/mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + }, + "node_modules/protractor/node_modules/jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dependencies": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/protractor/node_modules/jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/request-promise-native/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dependencies": { + "https-proxy-agent": "^2.2.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dependencies": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "engines": { + "node": "*" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/topcoder-testing-lib": { + "resolved": "git+ssh://git@github.com/topcoder-platform/topcoder-testing-lib.git#a5a1ebf0b5fce818fc38339af4d0106fe5a79974", + "dependencies": { + "@types/node": "^12.7.8", + "jsdom": "^15.1.1", + "protractor": "^5.4.2", + "typescript": "^3.5.3", + "winston": "^3.2.1" + } + }, + "node_modules/topcoder-testing-lib/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/topcoder-testing-lib/node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/topcoder-testing-lib/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/topcoder-testing-lib/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/topcoder-testing-lib/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/topcoder-testing-lib/node_modules/jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dependencies": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/topcoder-testing-lib/node_modules/jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=" + }, + "node_modules/topcoder-testing-lib/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/topcoder-testing-lib/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/topcoder-testing-lib/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/topcoder-testing-lib/node_modules/protractor": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz", + "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==", + "dependencies": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6", + "yargs": "^12.0.5" + }, + "bin": { + "protractor": "bin/protractor", + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/topcoder-testing-lib/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "node_modules/topcoder-testing-lib/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/topcoder-testing-lib/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/topcoder-testing-lib/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/topcoder-testing-lib/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/topcoder-testing-lib/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/topcoder-testing-lib/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/topcoder-testing-lib/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/topcoder-testing-lib/node_modules/yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "node_modules/topcoder-testing-lib/node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + } + }, + "node_modules/tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", + "bin": { + "tslint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/tslint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/tslint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/tslint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf7": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utf7/-/utf7-1.0.2.tgz", + "integrity": "sha1-lV9JCq5lO6IguUVqCod2wZk2CZE=", + "dependencies": { + "semver": "~5.3.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/uue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uue/-/uue-1.0.0.tgz", + "integrity": "sha1-ITuUSLmLmLnQPK9gGiI1ib2IZDA=" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dependencies": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dependencies": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webdriver-manager": { + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", + "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", + "dependencies": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + }, + "bin": { + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/winston": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "dependencies": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.1.0", + "is-stream": "^2.0.0", + "logform": "^2.2.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "dependencies": { + "readable-stream": "^2.3.7", + "triple-beam": "^1.2.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/winston/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/ws": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==", + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/xmldom": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", + "engines": { + "node": ">=0.1" + } + }, + "node_modules/y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/zip-stream": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.0.4.tgz", + "integrity": "sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==", + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.0.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "14.14.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", + "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==" + } + } + }, + "@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "@types/node": { + "version": "14.14.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", + "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==" + } + } + }, + "@types/jasmine": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.3.tgz", + "integrity": "sha512-5QKAG8WfC9XrOgYLXPrxv1G2IIUE6zDyzTWamhNWJO0LqPRUbZ0q0zGHDhDJ7MpFloUuyME/jpBIdPjq3/P3jA==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/lodash": { + "version": "4.14.168", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", + "integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==", + "dev": true + }, + "@types/node": { + "version": "12.19.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.16.tgz", + "integrity": "sha512-7xHmXm/QJ7cbK2laF+YYD7gb5MggHIIQwqyjin3bpEGiSuvScMQ5JZZXPvRipi1MwckTQbJZROMns/JxdnIL1Q==" + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=" + }, + "@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==" + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" + }, + "addressparser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", + "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=" + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "archiver": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.2.0.tgz", + "integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==", + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.0", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.1.4", + "zip-stream": "^4.0.4" + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "bl": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.4.tgz", + "integrity": "sha512-7tdr4EpSd7jJ6tuQ21vu2ke8w7pNEstzj1O8wwq6sNNzO3UDi5MA8Gny/gquCj7r2C6fHudg8tKRGyjRgmvNxQ==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "browserstack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", + "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "compress-commons": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.0.2.tgz", + "integrity": "sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==", + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, + "crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "exceljs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.2.0.tgz", + "integrity": "sha512-r0/ClXRs3cQmMGJOQY6/ymnZSBSzeJL/LjAlKjY75ev1iQgf0LcmeFfTqFTFK0fADLAWieOMXe7abPoGYWI6hA==", + "requires": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.5.0", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "requires": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + }, + "fecha": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", + "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz", + "integrity": "sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "imap": { + "version": "0.8.19", + "resolved": "https://registry.npmjs.org/imap/-/imap-0.8.19.tgz", + "integrity": "sha1-NniHOTSrCc6mukh0HyhNoq9Z2NU=", + "requires": { + "readable-stream": "1.1.x", + "utf7": ">=1.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jasmine": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.6.4.tgz", + "integrity": "sha512-hIeOou6y0BgCOKYgXYveQvlY+PTHgDPajFf+vLCYbMTQ+VjAP9+EQv0nuC9+gyCAAWISRFauB1XUb9kFuOKtcQ==", + "requires": { + "glob": "^7.1.6", + "jasmine-core": "~3.6.0" + } + }, + "jasmine-core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==" + }, + "jasmine-reporters": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz", + "integrity": "sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A==", + "requires": { + "mkdirp": "^0.5.1", + "xmldom": "^0.1.22" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + } + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "klaw-sync": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-2.1.0.tgz", + "integrity": "sha1-PTvNhgDnv971MjHHOf8FOu1WDkQ=", + "requires": { + "graceful-fs": "^4.1.11" + } + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha1-SeKM1VkBNFjIFMVHnTxmOiG/qmw=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "logform": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + } + }, + "mail-listener2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/mail-listener2/-/mail-listener2-0.3.1.tgz", + "integrity": "sha1-GBRJfZYy/Y6vTjywg6qQEpZh+ok=", + "requires": { + "async": "^0.9.0", + "imap": "~0.8.14", + "mailparser": "~0.4.6" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + } + } + }, + "mailparser": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-0.4.9.tgz", + "integrity": "sha1-HQpI1vqqovCawTmO0CPY746xnis=", + "requires": { + "encoding": ">=0.1.4", + "mime": "*", + "mimelib": ">=0.2.17", + "uue": "~1.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mime": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==" + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "requires": { + "mime-db": "1.45.0" + } + }, + "mimelib": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.3.1.tgz", + "integrity": "sha1-eHrdJBXYJ6yzr27EvKHqlZZBiFM=", + "requires": { + "addressparser": "~1.0.1", + "encoding": "~0.1.12" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "papaparse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.0.tgz", + "integrity": "sha512-Lb7jN/4bTpiuGPrYy4tkKoUS8sTki8zacB5ke1p5zolhcSE4TlWgrlsxjrDTbG/dFVh07ck7X36hUf/b5V68pg==" + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "dependencies": { + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + } + }, + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=" + } + } + }, + "protractor-beautiful-reporter": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/protractor-beautiful-reporter/-/protractor-beautiful-reporter-1.3.6.tgz", + "integrity": "sha512-lALPJJV8li3AqweEfKcXSRBK/QSe82FyB13b1+6NQvrAkE6YyoZ91pYg1ZNUcaZU0HO+pPAmbF4mfW+5FLvieg==", + "requires": { + "circular-json": "^0.3.1", + "fs-extra": "^3.0.1", + "klaw-sync": "^2.1.0", + "mkdirp": "~0.3.5" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + } + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-glob": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", + "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "topcoder-testing-lib": { + "version": "git+ssh://git@github.com/topcoder-platform/topcoder-testing-lib.git#a5a1ebf0b5fce818fc38339af4d0106fe5a79974", + "from": "topcoder-testing-lib@git+https://github.com/topcoder-platform/topcoder-testing-lib.git#develop", + "requires": { + "@types/node": "^12.7.8", + "jsdom": "^15.1.1", + "protractor": "^5.4.2", + "typescript": "^3.5.3", + "winston": "^3.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + } + }, + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "protractor": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.4.tgz", + "integrity": "sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==", + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6", + "yargs": "^12.0.5" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "tslint-config-prettier": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", + "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==" + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unzipper": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", + "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "utf7": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utf7/-/utf7-1.0.2.tgz", + "integrity": "sha1-lV9JCq5lO6IguUVqCod2wZk2CZE=", + "requires": { + "semver": "~5.3.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uue/-/uue-1.0.0.tgz", + "integrity": "sha1-ITuUSLmLmLnQPK9gGiI1ib2IZDA=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webdriver-manager": { + "version": "12.1.8", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", + "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "winston": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.1.0", + "is-stream": "^2.0.0", + "logform": "^2.2.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + } + } + }, + "winston-transport": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "requires": { + "readable-stream": "^2.3.7", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==" + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xmldom": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "zip-stream": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.0.4.tgz", + "integrity": "sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==", + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.0.2", + "readable-stream": "^3.6.0" + } + } + } +} diff --git a/connect-automation/package.json b/connect-automation/package.json new file mode 100644 index 000000000..8e2205add --- /dev/null +++ b/connect-automation/package.json @@ -0,0 +1,45 @@ +{ + "name": "connect-app-e2e-test", + "version": "1.0.0", + "description": "Connect App Automation Tests", + "main": "conf.js", + "dependencies": { + "@types/node": "^12.7.8", + "exceljs": "^4.2.0", + "jasmine": "^3.4.0", + "jasmine-reporters": "^2.3.2", + "jsdom": "^15.1.1", + "lodash": "^4.17.19", + "mail-listener2": "^0.3.1", + "moment": "^2.29.1", + "papaparse": "^5.3.0", + "protractor": "^7.0.0", + "protractor-beautiful-reporter": "^1.2.8", + "topcoder-testing-lib": "git+https://github.com/topcoder-platform/topcoder-testing-lib.git#develop", + "tslint-config-prettier": "^1.18.0", + "typescript": "^3.5.3", + "webdriver-manager": "^12.1.7", + "winston": "^3.2.1" + }, + "devDependencies": { + "@types/jasmine": "^3.3.16", + "@types/jasminewd2": "^2.0.6", + "@types/lodash": "^4.14.159", + "rimraf": "^2.6.3", + "tslint": "^5.18.0", + "yargs-parser": "^13.1.2" + }, + "scripts": { + "tsc": "tsc", + "clean": "rimraf temp/ && rimraf download/ && rimraf test-results/", + "webdriver-update": "node node_modules/protractor/bin/webdriver-manager update", + "pretest": "npm run webdriver-update && npm run clean && npm run tsc", + "test": "protractor temp/conf.js", + "lint": "npx tslint --project ." + }, + "keywords": [ + "protractor", + "jasmine", + "typescript" + ] +} diff --git a/connect-automation/page-objects/common-page/common.helper.ts b/connect-automation/page-objects/common-page/common.helper.ts new file mode 100644 index 000000000..d8fe83a8f --- /dev/null +++ b/connect-automation/page-objects/common-page/common.helper.ts @@ -0,0 +1,327 @@ +import moment = require('moment'); +import { BrowserStack } from 'protractor/built/driverProviders'; +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import * as appconfig from '../../config/app-config.json'; +import { logger } from '../../logger/logger'; +import TcElement from '../../node_modules/topcoder-testing-lib/dist/src/tc-element'; +import { TcElementImpl } from '../../node_modules/topcoder-testing-lib/dist/src/tc-element-impl'; +import { ConfigHelper } from '../../utils/config-helper'; +import { LoginPageHelper } from '../login/login.helper'; + +/** + * Wait until condition return true + * @param func function for checking condition + * @param extraMessage extra error message when timeout + * @param isPageLoad wait for loading page + */ +const waitUntil = async ( + func: () => any, + extraMessage: string, + isPageLoad: boolean +) => { + await BrowserHelper.waitUntil( + func, + isPageLoad + ? appconfig.Timeout.PageLoad + : appconfig.Timeout.ElementVisibility, + (isPageLoad + ? appconfig.LoggerErrors.PageLoad + : appconfig.LoggerErrors.ElementVisibilty) + + '.' + + extraMessage + ); +}; + +export const CommonHelper = { + /** + * Log in browser + * @param username user name + * @param password password + */ + async login(username: string, password: string) { + await BrowserHelper.initialize(); + await BrowserHelper.maximize(); + + await LoginPageHelper.open(); + await LoginPageHelper.login(username, password); + }, + + /** + * Log out browser + */ + async logout() { + try { + await LoginPageHelper.logout(); + } catch (e) { + await BrowserHelper.restart(); + } + }, + + /** + * Wait until the element becomes visible + * @param {TcElementImpl} tcElement element + * @param {TcElementImpl} extraMessage extra message + * @param {Boolean} isPageLoad is loading page + */ + async waitUntilVisibilityOf( + func: () => TcElement, + extraMessage: string, + isPageLoad: boolean + ) { + await waitUntil( + () => async () => { + try { + return await func().isDisplayed(); + } catch { + // element is not attached to the DOM of a page. + return false; + } + }, + extraMessage, + isPageLoad + ); + }, + + /** + * Wait until the element is present + * @param {TcElementImpl} tcElement element + * @param {TcElementImpl} extraMessage extra message + * @param {Boolean} isPageLoad is loading page + */ + async waitUntilPresenceOf( + func: () => TcElement, + extraMessage: string, + isPageLoad: boolean + ) { + await BrowserHelper.waitUntil( + () => async () => { + try { + return await func().isPresent(); + } catch { + // element is not attached to the DOM of a page. + return false; + } + }, + isPageLoad + ? appconfig.Timeout.PageLoad + : appconfig.Timeout.ElementPresence, + (isPageLoad + ? appconfig.LoggerErrors.PageLoad + : appconfig.LoggerErrors.ElementPresence) + + '.' + + extraMessage + ); + }, + + /** + * Wait for Page to be displayed + */ + async waitForPageDisplayed() { + const rootId = ElementHelper.getElementById('root'); + + await CommonHelper.waitUntilVisibilityOf( + () => rootId, + 'Wait for home page', + true + ); + return rootId; + }, + + /** + * Fill Input Field with value + * @param el target element + * @param value value to fill + */ + async fillInputField(el: TcElementImpl, value: string) { + el.click(); + await BrowserHelper.sleep(100); + el.clear(); + await BrowserHelper.sleep(100); + el.sendKeys(value); + }, + + /** + * Select input by its containing text + * @param text desired text value + */ + async selectInputByContainingText(text: string) { + const selectedOption = ElementHelper.getElementContainingText(text); + await selectedOption.click(); + }, + + /** + * Get element that contain text + * @param tag tag + * @param text text contain + * @param parent parent element + */ + findElementByText(tag: string, text: string, parent?: TcElementImpl) { + return ElementHelper.getElementByXPath( + '//' + tag + '[contains(text(), "' + text + '")]', + parent + ); + }, + + /** + * Find desired value from dropdown menu + * @param text search value + * @param parent (optional) parent element + */ + async findTextFromDropDown(text: string, parent?: TcElementImpl) { + const xpath = `//div[contains(text(), "${text}")]`; + const dropDowns = await ElementHelper.getAllElementsByXPath(xpath, parent); + + return dropDowns; + }, + + /** + * Compare given url to current page's url + * @param url expected page url + */ + async verifyPageUrl(url: string) { + const currentUrl = await BrowserHelper.getCurrentUrl(); + expect(currentUrl).toContain(url); + }, + + /** + * Navigate to All Projects Page + */ + async navigateToAllProjectsPage() { + await BrowserHelper.open(ConfigHelper.getAllProjectsUrl()); + await CommonHelper.waitForPageDisplayed(); + await BrowserHelper.sleep(5000); + }, + + /** + * Append date time to given input text + * @param inputText input text + */ + appendDate(inputText: string) { + return `${inputText}-${moment().format()}`; + }, + + /** + * Get Project Title + */ + projectTitle() { + return ElementHelper.getElementByClassName('_1Iqc2q'); + }, + + /** + * Get Page Title + */ + pageTitle() { + return ElementHelper.getElementByClassName('TopBarContainer'); + }, + + /** + * Get Loading Indicator + */ + loadingIndicator() { + return ElementHelper.getElementByClassName('loading-indicator'); + }, + + /** + * Wait for project title to appear + */ + async waitForProjectTitle() { + await CommonHelper.waitUntilVisibilityOf( + () => this.projectTitle(), + 'Wait for project title', + true + ); + logger.info('My Project Page Loaded'); + }, + + /** + * Wait for page title to appear + */ + async waitForPageTitle() { + await CommonHelper.waitUntilVisibilityOf( + () => this.pageTitle(), + 'Wait for project title', + true + ); + logger.info('Home Page Loaded'); + }, + + /** + * Get recent project title element + * @param isCustomer true if current logged in user had customer role + */ + async firstProject(isCustomer = false) { + const projectClassName = isCustomer ? 'project-header-details' : 'project-title' + const titles = await ElementHelper.getAllElementsByClassName(projectClassName); + + return titles[0]; + }, + + /** + * Navigate to first Project From Dashboard + * @param isCustomer true if current logged in user had customer role + */ + async goToRecentlyCreatedProject(isCustomer = false) { + await BrowserHelper.sleep(40000); + await BrowserHelper.waitUntilVisibilityOf(await this.firstProject(isCustomer)); + const title = await this.firstProject(isCustomer); + await BrowserHelper.waitUntilClickableOf(title); + await title.click(); + }, + + /** + * Get Alert Box Element + */ + alertBox() { + return ElementHelper.getElementByClassName('s-alert-box-inner'); + }, + + /** + * Get Success Alert Span + */ + successAlert() { + return ElementHelper.getElementByTag('span', this.alertBox()); + }, + + /** + * Wait for success alert to show + */ + async waitForSuccessAlert(target: TcElementImpl) { + await CommonHelper.waitUntilVisibilityOf( + () => target, + 'Wait for success alert message', + true + ); + logger.info('Success Alert Displayed'); + }, + + /** + * Wait until element visibility and click + */ + async waitAndClickElement(targetEl: TcElementImpl) { + await BrowserHelper.waitUntilVisibilityOf(targetEl); + await targetEl.click(); + }, + + /** + * Verify success alert shows correct message + * @param expectedText expected success text to appear + */ + async verifySuccessAlert(expectedText: string) { + await this.waitForSuccessAlert(this.alertBox()); + expect(await this.successAlert().getText()).toBe(expectedText); + }, + + /** + * Necessary input format for calendar input + */ + dateFormat() { + return '00YYYYMMDD'; + }, + + /** + * Get Create Phase Page title + */ + get createPhasePageTitle() { + return ElementHelper.getElementByClassName('_2edGvU'); + }, +}; diff --git a/connect-automation/page-objects/login/login.helper.ts b/connect-automation/page-objects/login/login.helper.ts new file mode 100644 index 000000000..1088bf4f2 --- /dev/null +++ b/connect-automation/page-objects/login/login.helper.ts @@ -0,0 +1,42 @@ +import { BrowserHelper } from 'topcoder-testing-lib'; +import { CommonHelper } from '../common-page/common.helper'; +import { LoginPage } from './login.po'; + +export class LoginPageHelper { + /** + * Set the page object + * @param loginPage login Page + */ + public static setLoginPage(loginPage: LoginPage) { + this.loginPageObject = loginPage; + } + + /** + * Open page + */ + public static async open() { + this.loginPageObject = new LoginPage(); + await this.loginPageObject.open(); + } + + /** + * Login + * @param {String} username + * @param {String} password + */ + public static async login(username: string, password: string) { + await this.loginPageObject.waitForLoginForm(); + await this.loginPageObject.fillLoginForm(username, password); + await CommonHelper.waitForPageDisplayed(); + } + + /** + * Logout + */ + public static async logout() { + await this.loginPageObject.logout(); + await BrowserHelper.sleep(5000); + } + + private static loginPageObject: LoginPage; +} diff --git a/connect-automation/page-objects/login/login.po.ts b/connect-automation/page-objects/login/login.po.ts new file mode 100644 index 000000000..929d83744 --- /dev/null +++ b/connect-automation/page-objects/login/login.po.ts @@ -0,0 +1,90 @@ +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import * as appconfig from '../../config/app-config.json'; +import { logger } from '../../logger/logger'; +import { ConfigHelper } from '../../utils/config-helper'; +import { CommonHelper } from '../common-page/common.helper'; + +export class LoginPage { + /** + * Get login page + */ + public async open() { + await BrowserHelper.open(ConfigHelper.getRedirectLoginUrl()); + logger.info('User navigated to Topcoder Login Page'); + } + + /** + * Logout the user + */ + public async logout() { + await BrowserHelper.open(ConfigHelper.getLogoutUrl()); + logger.info('user logged out'); + } + + /** + * Get Username field + */ + public get userNameField() { + return ElementHelper.getElementByName('username'); + } + + /** + * Get Password field + */ + public get passwordField() { + return ElementHelper.getElementByName('password'); + } + + /** + * Get Login button + */ + public get loginButton() { + return ElementHelper.getElementByCss("button[type = 'submit']"); + } + + /** + * Get login form + */ + public get loginForm() { + return ElementHelper.getElementByClassName('auth0-lock-widget'); + } + + /** + * Wait for the login form to be displayed + */ + public async waitForLoginForm() { + // Wait until login form appears + await BrowserHelper.sleep(8000); + CommonHelper.waitUntilVisibilityOf( + () => this.loginForm, + 'Wait for login form', + true + ); + logger.info('Login Form Displayed'); + } + + /** + * Fill and submit the login form + */ + public async fillLoginForm(username, password) { + await CommonHelper.waitUntilPresenceOf( + () => this.userNameField, + 'wait for username field', + false + ); + await this.userNameField.sendKeys(username); + await this.passwordField.sendKeys(password); + logger.info( + 'Login form filled with values: username - ' + + username + + ', password - FILTERED' + ); + await BrowserHelper.waitUntilClickableOf( + this.loginButton, + appconfig.Timeout.ElementClickable, + appconfig.LoggerErrors.ElementClickable + ); + await this.loginButton.click(); + logger.info('Submitted login form'); + } +} diff --git a/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts new file mode 100644 index 000000000..e01f06ff6 --- /dev/null +++ b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts @@ -0,0 +1,109 @@ +import * as moment from 'moment'; +import { BrowserStack } from 'protractor/built/driverProviders'; +import { BrowserHelper } from 'topcoder-testing-lib'; +import { logger } from '../../../logger/logger'; +import { CommonHelper } from '../../common-page/common.helper'; +import { IPhaseCreationData } from './create-new-phase.model'; +import { CreateNewPhasePageObject } from './create-new-phase.po'; + +export class CreateNewPhaseHelper { + /** + * Initialize Create New Phase page object + */ + public static initialize() { + this.createNewPhasePageObject = new CreateNewPhasePageObject(); + } + + /** + * Verify whether user can create a phase and publish it. + * @param formData phase creation form data defined in test data + */ + public static async verifyCreateNewPhase(formData: IPhaseCreationData) { + await this.clickOnAddNewPhaseButton(); + await this.fillCreatePhaseForm(formData.title, formData.daysBetweenStartAndEndDate); + // Fill report form + await this.fillMilestoneForm(0, formData.reportName); + await this.createNewPhasePageObject.addMilestoneButton.click(); + // Fill deliverable review form + await this.fillMilestoneForm(1, formData.deliverableReviewName, 'Deliverable Review'); + await this.createNewPhasePageObject.addMilestoneButton.click(); + // Fill final deliverable review form + await this.fillMilestoneForm(2, formData.finalDeliverableReviewName, 'Final Deliverable Review'); + + await BrowserHelper.sleep(3000); + await this.createNewPhasePageObject.publishButton.click(); + + const alertElement = CommonHelper.alertBox(); + await CommonHelper.waitForSuccessAlert(alertElement); + expect(await CommonHelper.successAlert().getText()).toBe( + `PROJECT PHASE CREATED.` + ); + } + + private static createNewPhasePageObject: CreateNewPhasePageObject; + + /** + * Click Add New Phase button, verify phase creation screen appearance + */ + private static async clickOnAddNewPhaseButton() { + await BrowserHelper.waitUntilClickableOf(this.createNewPhasePageObject.addNewPhaseButton); + await this.createNewPhasePageObject.addNewPhaseButton.click(); + // Phase creation form should appear + const newPhaseFormElement = this.createNewPhasePageObject.phaseCreationForm; + await BrowserHelper.waitUntilPresenceOf(newPhaseFormElement); + expect(newPhaseFormElement).toBeDefined(); + } + + /** + * Put the phase name, start date and end date to phase creation form + * @param title form phase name + * @param daysBetweenStartAndEndDate number of days between start and end date. default to 3 days. + */ + private static async fillCreatePhaseForm(title: string, daysBetweenStartAndEndDate = 3) { + // Fill title field + const titleWithDate = CommonHelper.appendDate(title); + await this.createNewPhasePageObject.titleInput.sendKeys(titleWithDate); + logger.info(`Filled title field with: ${titleWithDate}`); + + // Fill start date field + const startDate = moment().format(CommonHelper.dateFormat()); + await this.createNewPhasePageObject.startDateInput().sendKeys(startDate); + logger.info(`Filled start date field with: ${startDate.slice(2)}`); + + // Fill end date field + const endDate = moment().add(daysBetweenStartAndEndDate, 'days').format(CommonHelper.dateFormat()); + await this.createNewPhasePageObject.endDateInput().sendKeys(endDate); + logger.info(`Filled end date field with: ${endDate.slice(2)}`); + } + + /** + * Create and Fill milestone form + * @param appendix numeric indicator of added milestone form + * @param name name field + * @param type type field + */ + private static async fillMilestoneForm(appendix: number, name: string, type?: string, ) { + await BrowserHelper.sleep(3000); + if (type) { + const types = await this.createNewPhasePageObject.allTypeInput(); + await types[appendix].click(); + await BrowserHelper.sleep(500); + await this.createNewPhasePageObject.getOptionFromTypeDropdown(type).click(); + } + // Fill name field + const nameInput = this.createNewPhasePageObject.nameInput(appendix.toString()); + await nameInput.clear(); + await nameInput.sendKeys(name); + logger.info(`Filled name field with: ${name}`); + + // Fill start date field + const startDate = moment().format(CommonHelper.dateFormat()); + await this.createNewPhasePageObject.startDateInput(appendix.toString()).sendKeys(startDate); + logger.info(`Filled start date field with: ${startDate.slice(2)}`); + + // Fill end date field + const endDate = moment().add(1, 'days').format(CommonHelper.dateFormat()); + await this.createNewPhasePageObject.endDateInput(appendix.toString()).sendKeys(endDate); + logger.info(`Filled end date field with: ${endDate.slice(2)}`); + } +} diff --git a/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.ts b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.ts new file mode 100644 index 000000000..c41a7901a --- /dev/null +++ b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.ts @@ -0,0 +1,7 @@ +export interface IPhaseCreationData { + title: string; + daysBetweenStartAndEndDate?: number; + reportName: string; + deliverableReviewName: string; + finalDeliverableReviewName: string; +} \ No newline at end of file diff --git a/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.ts b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.ts new file mode 100644 index 000000000..78d37bda8 --- /dev/null +++ b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.ts @@ -0,0 +1,78 @@ +import { ElementHelper } from 'topcoder-testing-lib'; +export class CreateNewPhasePageObject { + /** + * Get Add New Phase Button + */ + public get addNewPhaseButton() { + return ElementHelper.getElementByButtonText('Add New Phase'); + } + + /** + * Get Project Creation Form + */ + public get phaseCreationForm() { + return ElementHelper.getElementByClassName('_1jLI3q'); + } + + /** + * Get title input + */ + public get titleInput() { + return ElementHelper.getElementByName('title'); + } + + /** + * Get name input + * @param appendix numeric indicator of added milestone form + */ + public nameInput(appendix?: string) { + return ElementHelper.getElementByName(`name_${appendix}`); + } + + /** + * Get start date input + * @param appendix numeric indicator of added milestone form + */ + public startDateInput(appendix?: string) { + const inputName = appendix ? `startDate_${appendix}` : 'startDate'; + return ElementHelper.getElementByName(inputName); + } + + /** + * Get end date input + * @param appendix numeric indicator of added milestone form + */ + public endDateInput(appendix?: string) { + const inputName = appendix ? `endDate_${appendix}` : 'endDate'; + return ElementHelper.getElementByName(inputName); + } + + /** + * Get Type Input + */ + public async allTypeInput() { + return ElementHelper.getAllElementsByClassName('react-select-container'); + } + + /** + * Select option from type field dropdown + * @param option desired option + */ + public getOptionFromTypeDropdown(option: string) { + return ElementHelper.getElementByCssContainingText('.react-select__option', option); + } + + /** + * Get Add Milestone Button + */ + public get addMilestoneButton() { + return ElementHelper.getElementByButtonText('Add Milestone'); + } + + /** + * Get Publish Button + */ + public get publishButton() { + return ElementHelper.getElementByButtonText('Publish'); + } +} diff --git a/connect-automation/page-objects/profile-update/footer/footer.helper.ts b/connect-automation/page-objects/profile-update/footer/footer.helper.ts new file mode 100644 index 000000000..41668fd11 --- /dev/null +++ b/connect-automation/page-objects/profile-update/footer/footer.helper.ts @@ -0,0 +1,25 @@ +import { FooterPageObject } from './footer.po'; + +export class FooterHelper { + /** + * Initialize Footer Page Object + */ + public static initialize() { + this.footerPageObject = new FooterPageObject(); + } + + /** + * Verify whether copyright year is displayed correctly. + */ + public static async verifyCopyright() { + const footerText = await this.footerPageObject.footerText.getText(); + const footerTextArray = footerText.split(' '); + + const displayedYear = footerTextArray.length > 2 ? footerTextArray[2] : ''; + const expectedYear = new Date().getFullYear().toString(); + + expect(expectedYear).toEqual(displayedYear); + } + + private static footerPageObject: FooterPageObject; +} diff --git a/connect-automation/page-objects/profile-update/footer/footer.po.ts b/connect-automation/page-objects/profile-update/footer/footer.po.ts new file mode 100644 index 000000000..eb32a3486 --- /dev/null +++ b/connect-automation/page-objects/profile-update/footer/footer.po.ts @@ -0,0 +1,10 @@ +import { ElementHelper } from 'topcoder-testing-lib'; + +export class FooterPageObject { + /** + * Get Footer Copyright Text + */ + public get footerText() { + return ElementHelper.getElementByClassName('copyright-notice'); + } +} diff --git a/connect-automation/page-objects/profile-update/left-menu/left-menu.helper.ts b/connect-automation/page-objects/profile-update/left-menu/left-menu.helper.ts new file mode 100644 index 000000000..dbdbe9203 --- /dev/null +++ b/connect-automation/page-objects/profile-update/left-menu/left-menu.helper.ts @@ -0,0 +1,72 @@ +import { logger } from '../../../logger/logger'; +import { ConfigHelper } from '../../../utils/config-helper'; +import { CommonHelper } from '../../common-page/common.helper'; +import { LeftMenuPageObject } from './left-menu.po'; + +export class LeftMenuPageHelper { + /** + * Initialize Left Menu Page Object + */ + public static initialize() { + this.leftMenuPageObject = new LeftMenuPageObject(); + } + + /** + * Verify Profile Information Link redirected correctly + */ + public static async verifyProfileInformation() { + const profileInfo = await this.leftMenuPageObject.profileInformationLink(); + await profileInfo.click(); + await CommonHelper.waitForPageDisplayed(); + + await CommonHelper.verifyPageUrl(ConfigHelper.getMyProfileUrl()); + } + + /** + * Verify Notification Settings Link redirected correctly + */ + public static async verifyNotificationSettings() { + const notificationSettings = await this.leftMenuPageObject.notificationSettingsLink(); + await notificationSettings.click(); + await CommonHelper.waitForPageDisplayed(); + logger.info('User navigated to Notification Settings Page'); + + await CommonHelper.verifyPageUrl(ConfigHelper.getNotificationSettingsUrl()); + } + + /** + * Verify Account & Security Link redirected correctly + */ + public static async verifyAccountAndSecurity() { + const accountAndSecurity = await this.leftMenuPageObject.accountAndSecurityLink(); + await accountAndSecurity.click(); + await CommonHelper.waitForPageDisplayed(); + logger.info('User navigated to Account & Security Page'); + + await CommonHelper.verifyPageUrl(ConfigHelper.getAccountAndSecurityUrl()); + } + + /** + * Verify All Projects redirected correctly + */ + public static async verifyAllProjects() { + await this.leftMenuPageObject.allProjectsLink.click(); + await CommonHelper.waitForPageDisplayed(); + logger.info('User navigated to All Projects Page'); + + await CommonHelper.verifyPageUrl(ConfigHelper.getAllProjectsUrl()); + } + + /** + * Verify Notification Link redirected to correctly + */ + public static async verifyNotifications() { + await this.leftMenuPageObject.notificationsLink.click(); + await CommonHelper.waitForPageDisplayed(); + logger.info('User navigated to Notifications Page'); + + await CommonHelper.verifyPageUrl(ConfigHelper.getNotificationUrl()); + } + + private static leftMenuPageObject: LeftMenuPageObject; +} diff --git a/connect-automation/page-objects/profile-update/left-menu/left-menu.po.ts b/connect-automation/page-objects/profile-update/left-menu/left-menu.po.ts new file mode 100644 index 000000000..ccf6fcd03 --- /dev/null +++ b/connect-automation/page-objects/profile-update/left-menu/left-menu.po.ts @@ -0,0 +1,55 @@ +import { ElementHelper } from 'topcoder-testing-lib'; + +export class LeftMenuPageObject { + /** + * Get My Profile Link Element + */ + public get myProfileLink() { + return ElementHelper.getElementContainingText('MY PROFILE'); + } + + /** + * Get Sub Menus + */ + public async getSubmenus() { + return ElementHelper.getAllElementsByClassName('_1l5nE0 _3wRYsd'); + } + + /** + * Get Profile Information Link + */ + public async profileInformationLink() { + const menus = await this.getSubmenus(); + return menus[0]; + } + + /** + * Get Notification Settings Link + */ + public async notificationSettingsLink() { + const menus = await this.getSubmenus(); + return menus[1]; + } + + /** + * Get Account & Security Link + */ + public async accountAndSecurityLink() { + const menus = await this.getSubmenus(); + return menus[2]; + } + + /** + * Get All Projects Link + */ + public get allProjectsLink() { + return ElementHelper.getElementContainingText('ALL PROJECTS'); + } + + /** + * Get Notifications Link + */ + public get notificationsLink() { + return ElementHelper.getElementContainingText('NOTIFICATIONS'); + } +} diff --git a/connect-automation/page-objects/profile-update/my-profile/my-profile.helper.ts b/connect-automation/page-objects/profile-update/my-profile/my-profile.helper.ts new file mode 100644 index 000000000..0ac58669e --- /dev/null +++ b/connect-automation/page-objects/profile-update/my-profile/my-profile.helper.ts @@ -0,0 +1,243 @@ +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import { logger } from '../../../logger/logger'; +import { CommonHelper } from '../../common-page/common.helper'; +import { ConfigHelper } from '../../../utils/config-helper'; +import { IUserProfile } from './my-profile.model'; +import { MyProfilePageObject } from './my-profile.po'; + +export class MyProfilePageHelper { + /** + * Initialize My Profile page object + */ + public static initialize() { + this.myProfilePageObject = new MyProfilePageObject(); + } + + /** + * Opens the My Profile page + */ + public static async open() { + await MyProfilePageObject.open(); + await CommonHelper.waitForPageDisplayed(); + await BrowserHelper.sleep(5000); + } + + /** + * Update First Name Field + * @param firstName first name + */ + public static async updateFirstName(firstName: string) { + await CommonHelper.fillInputField( + this.myProfilePageObject.firstNameField, + firstName + ); + logger.info(`Updated Last Name Field: ${firstName}`); + } + + /** + * Update Last Name Field + * @param lastName last name + */ + public static async updateLastName(lastName: string) { + await CommonHelper.fillInputField( + this.myProfilePageObject.lastNameField, + lastName + ); + logger.info(`Updated Last Name Field: ${lastName}`); + } + + /** + * Update Title Field + * @param title title + */ + public static async updateTitle(title: string) { + await CommonHelper.fillInputField( + this.myProfilePageObject.titleField, + title + ); + logger.info(`Updated Title Field: ${title}`); + } + + /** + * Update Company Url Field + * @param companyUrl company url + */ + public static async updateCompanyUrl(companyUrl: string) { + await CommonHelper.fillInputField( + this.myProfilePageObject.companyUrlField, + companyUrl + ); + logger.info(`Updated Company Url Field: ${companyUrl}`); + } + + /** + * Update Local Time Zone Field + * @param localTimezone local timezone + */ + public static async updateLocalTimezone(localTimezone: string) { + const el = await this.myProfilePageObject.localTimezoneField(); + await el.click(); + const selectOption = await this.myProfilePageObject.selectTextFromDropDown( + localTimezone + ); + logger.info(`Updated Local Time Field: ${localTimezone}`); + await selectOption.click(); + } + + /** + * Update Start Time Field + * @param startTime start time + */ + public static async updateStartTime(startTime: string) { + const el = await this.myProfilePageObject.startTimeField(); + await el.click(); + const selectOption = await this.myProfilePageObject.selectTextFromDropDown( + startTime + ); + logger.info(`Updated Start Time Field: ${startTime}`); + await selectOption.click(); + } + + /** + * Update End Time Field + * @param endTime end time + */ + public static async updateEndTime(endTime: string) { + const el = await this.myProfilePageObject.endTimeField(); + await el.click(); + const selectOption = await this.myProfilePageObject.selectTextFromDropDown( + endTime + ); + logger.info(`Updated End Time Field: ${endTime}`); + await selectOption.click(); + } + + /** + * Update Country Field + * @param country country name + */ + public static async updateCountryDropdown(country: string) { + const el = await this.myProfilePageObject.countryField(); + await el.click(); + await BrowserHelper.sleep(200); + const selectOption = await this.myProfilePageObject.selectTextFromDropDown( + country + ); + await BrowserHelper.sleep(200); + logger.info(`Updated Country Field: ${country}`); + await selectOption.click(); + } + + /** + * Fill Profile Information on User Settings Page. + */ + public static async updateProfileInformation(userProfile: IUserProfile) { + await this.updateFirstName(userProfile.firstName); + await this.updateLastName(userProfile.lastName); + await this.updateTitle(userProfile.title); + await this.updateCompanyUrl(userProfile.companyUrl); + await this.updateLocalTimezone(userProfile.localTimezone); + await this.updateStartTime(userProfile.startTime); + await this.updateEndTime(userProfile.endTime); + + // Click on Save Settings button. + await this.myProfilePageObject.submitButton.click(); + + // Wait until Success Alert Message Appears + const alertElement = this.myProfilePageObject.successAlert; + await CommonHelper.waitForSuccessAlert(alertElement); + } + + /** + * Select Country From Business Phone Field. + * @param businessPhoneCountry business phone country + */ + public static async changeBusinessPhoneCountry(businessPhoneCountry: string) { + const countryField = this.myProfilePageObject.businessPhoneCountryField; + await countryField.click(); + const dropDownParent = this.myProfilePageObject.businessPhoneDropdown; + const selectOptions = await ElementHelper.getAllElementsByLinkText( + businessPhoneCountry, + dropDownParent + ); + await selectOptions[0].click(); + } + + /** + * Verifies whether the current user can update the basic information. + * @param userProfile Test data for User Profile + */ + public static async verifyProfileInformation(userProfile: IUserProfile) { + // My Profile page update button becomes active only when data is changed. + // To be able to edit in every test case we are adding timestamp to firstname field. + userProfile = { + ...userProfile, + firstName: CommonHelper.appendDate(userProfile.firstName), + }; + + await this.updateProfileInformation(userProfile); + + await BrowserHelper.sleep(1000); + // Go To User Profile Page Again + await this.open(); + + const firstName = await this.myProfilePageObject.getFirstNameValue(); + const lastName = await this.myProfilePageObject.getLastNameValue(); + const title = await this.myProfilePageObject.getTitleValue(); + const companyUrl = await this.myProfilePageObject.getCompanyUrlValue(); + + expect(firstName).toEqual(userProfile.firstName); + expect(lastName).toEqual(userProfile.lastName); + expect(title).toEqual(userProfile.title); + expect(companyUrl).toEqual(userProfile.companyUrl); + } + + /** + * Verifies whether the business phone/country sync accordingly. + * @param userProfile Test data for User Profile + */ + public static async verifyBusinessPhoneSync(userProfile: IUserProfile) { + const { + country, + countryCode, + businessPhoneCountry, + businessPhoneCountryCode, + countryAbbr, + } = userProfile; + + await this.changeBusinessPhoneCountry(businessPhoneCountry); + let businessNumber = await this.myProfilePageObject.getBusinessPhoneValue(); + let currentCountryCode = businessNumber.substr( + 0, + businessPhoneCountryCode.length + ); + + expect(currentCountryCode).toEqual(businessPhoneCountryCode); + expect( + await (await this.myProfilePageObject.countryField()).getText() + ).toEqual(businessPhoneCountry); + + await this.updateCountryDropdown(country); + businessNumber = await this.myProfilePageObject.getBusinessPhoneValue(); + currentCountryCode = businessNumber.substr(0, countryCode.length); + const countryAbbreviation = await this.myProfilePageObject.countryAbbreviation(); + + expect(countryAbbreviation).toEqual(countryAbbr); + expect(currentCountryCode).toEqual(countryCode); + } + + /** + * Verifies whether the user can close the profile window. + */ + public static async verifyUserCloseProfileWindow() { + const closeButton = this.myProfilePageObject.closeButton; + await closeButton.click(); + + const currentUrl = await BrowserHelper.getCurrentUrl(); + const expectedUrl = ConfigHelper.getAllProjectsUrl(); + + expect(currentUrl).toContain(expectedUrl); + } + + private static myProfilePageObject: MyProfilePageObject; +} diff --git a/connect-automation/page-objects/profile-update/my-profile/my-profile.model.ts b/connect-automation/page-objects/profile-update/my-profile/my-profile.model.ts new file mode 100644 index 000000000..97edbf399 --- /dev/null +++ b/connect-automation/page-objects/profile-update/my-profile/my-profile.model.ts @@ -0,0 +1,14 @@ +export interface IUserProfile { + firstName: string; + lastName: string; + title: string; + companyUrl: string; + country: string; + countryCode: string; + countryAbbr: string; + localTimezone: string; + startTime: string; + endTime: string; + businessPhoneCountry: string; + businessPhoneCountryCode: string; +} diff --git a/connect-automation/page-objects/profile-update/my-profile/my-profile.po.ts b/connect-automation/page-objects/profile-update/my-profile/my-profile.po.ts new file mode 100644 index 000000000..110953af0 --- /dev/null +++ b/connect-automation/page-objects/profile-update/my-profile/my-profile.po.ts @@ -0,0 +1,195 @@ +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import { logger } from '../../../logger/logger'; +import { TcElementImpl } from 'topcoder-testing-lib/dist/src/tc-element-impl'; +import { CommonHelper } from '../../common-page/common.helper'; +import { ConfigHelper } from '../../../utils/config-helper'; + +export class MyProfilePageObject { + /** + * Open the My Profile page + */ + public static async open() { + await BrowserHelper.open(ConfigHelper.getMyProfileUrl()); + logger.info('User navigated to My Profile Page'); + } + + /** + * Get First Name field + */ + public get firstNameField() { + return ElementHelper.getElementByName('firstName'); + } + + /** + * Get First Name value + */ + public async getFirstNameValue() { + return ElementHelper.getElementByName('firstName').getAttribute('value'); + } + + /** + * Get Last Name field + */ + public get lastNameField() { + return ElementHelper.getElementByName('lastName'); + } + + /** + * Get Last Name field value + */ + public async getLastNameValue() { + return ElementHelper.getElementByName('lastName').getAttribute('value'); + } + + /** + * Get Title field + */ + public get titleField() { + return ElementHelper.getElementByName('title'); + } + + /** + * Get Business Phone field + */ + public get businessPhoneField() { + return ElementHelper.getElementByName('businessPhone'); + } + + /** + * Get Business Phone field + */ + public async getBusinessPhoneValue() { + return ElementHelper.getElementByName('businessPhone').getAttribute( + 'value' + ); + } + + /** + * Get Country Abbreviation from Business Phone dropdown + */ + public async countryAbbreviation() { + return ElementHelper.getElementByClassName( + 'dropdown-menu-header' + ).getText(); + } + + /** + * Get title field value + */ + public async getTitleValue() { + return ElementHelper.getElementByName('title').getAttribute('value'); + } + + /** + * Get Company Url Field + */ + public get companyUrlField() { + return ElementHelper.getElementByName('companyURL'); + } + + /** + * Get Company Url value + */ + public async getCompanyUrlValue() { + return ElementHelper.getElementByName('companyURL').getAttribute('value'); + } + + /** + * Get Local TimeZone Field + */ + public async localTimezoneField() { + const xpath = `//span[text()='Local Timezone']/../following-sibling::div//div`; + const parentEl = await ElementHelper.getAllElementsByXPath(xpath); + return ElementHelper.getElementByCss( + 'div.react-select__control', + parentEl[0] + ); + } + + /** + * Get Start Time Field + */ + public async startTimeField() { + const xpath = `//label[text()='Start Time']/following-sibling::div`; + const parentEl = await ElementHelper.getAllElementsByXPath(xpath); + return ElementHelper.getElementByCss( + 'div.react-select__control', + parentEl[0] + ); + } + + /** + * Get End Time Field + */ + public async endTimeField() { + const xpath = `//label[text()='End Time']/following-sibling::div`; + const parentEl = await ElementHelper.getAllElementsByXPath(xpath); + return ElementHelper.getElementByCss( + 'div.react-select__control', + parentEl[0] + ); + } + + /** + * Get Country Field + */ + public async countryField() { + const xpath = `//span[text()='Country']/../following-sibling::div//div`; + const parentEl = await ElementHelper.getAllElementsByXPath(xpath); + return ElementHelper.getElementByCss( + 'div.react-select__control', + parentEl[0] + ); + } + + /** + * Get Submit Button + */ + public get submitButton() { + return ElementHelper.getElementByButtonText('Save settings'); + } + + /** + * Get Success Alert Span + */ + public get successAlert() { + return CommonHelper.findElementByText( + 'span', + 'Settings successfully saved.' + ); + } + /** + * Find Selected Text From Dropdown Menu + * @param text string + * @param parent (optional) parent element + */ + public async selectTextFromDropDown(text: string, parent?: TcElementImpl) { + const results = await CommonHelper.findTextFromDropDown(text, parent); + if (results.length > 2) { + return results[2]; + } else { + return results[0]; + } + } + + /** + * Get Close Button + */ + public get closeButton() { + return ElementHelper.getElementByClassName('close'); + } + + /** + * Get Business Phone Country Field Element + */ + public get businessPhoneCountryField() { + return ElementHelper.getElementByClassName('dropdown-wrap undefined'); + } + + /** + * Get Business Phone Dropdown Element + */ + public get businessPhoneDropdown() { + return ElementHelper.getElementByClassName('dropdown-menu-list'); + } +} diff --git a/connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.ts b/connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.ts new file mode 100644 index 000000000..b03ee885b --- /dev/null +++ b/connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.ts @@ -0,0 +1,58 @@ +import { ConfigHelper } from '../../../utils/config-helper'; +import { CommonHelper } from '../../common-page/common.helper'; +import { UserProfilePageObject } from './user-profile-menu.po'; + +export class UserProfileMenuHelper { + /** + * Initialize User Profile Page Object + */ + public static initialize() { + this.userProfilePageObject = new UserProfilePageObject(); + } + + /** + * Opens Profile Menu from right top corner section + */ + public static async openMenuDropdown() { + await CommonHelper.navigateToAllProjectsPage(); + await this.userProfilePageObject.menuDropdown.click(); + } + + /** + * Verify My Profile Page redirects to correct url + */ + public static async verifyMyProfile() { + await this.openMenuDropdown(); + await this.userProfilePageObject.myProfileLink.click(); + await CommonHelper.verifyPageUrl(ConfigHelper.getMyProfileUrl()); + } + + /** + * Verify Notification Settings button redirects correctly + */ + public static async verifyNotificationSettings() { + await this.openMenuDropdown(); + await this.userProfilePageObject.notificationSettingsLink.click(); + await CommonHelper.verifyPageUrl(ConfigHelper.getNotificationSettingsUrl()); + } + + /** + * Verify Account & Security button redirects correctly + */ + public static async verifyAccountAndSecurity() { + await this.openMenuDropdown(); + await this.userProfilePageObject.accountSecurityLink.click(); + await CommonHelper.verifyPageUrl(ConfigHelper.getAccountAndSecurityUrl()); + } + + /** + * Verify Logout button redirects to home page. + */ + public static async verifyLogout() { + await this.openMenuDropdown(); + await this.userProfilePageObject.logoutLink.click(); + await CommonHelper.verifyPageUrl(ConfigHelper.getHomePageUrl()); + } + + private static userProfilePageObject: UserProfilePageObject; +} diff --git a/connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.po.ts b/connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.po.ts new file mode 100644 index 000000000..1a9a2c5a4 --- /dev/null +++ b/connect-automation/page-objects/profile-update/user-profile-menu/user-profile-menu.po.ts @@ -0,0 +1,38 @@ +import { ElementHelper } from 'topcoder-testing-lib'; + +export class UserProfilePageObject { + /** + * Get Menu Dropdown Element + */ + public get menuDropdown() { + return ElementHelper.getElementByClassName('menu-wrap'); + } + + /** + * Get My Profile Link + */ + public get myProfileLink() { + return ElementHelper.getElementByLinkText('My profile'); + } + + /** + * Get Notification Settings Link + */ + public get notificationSettingsLink() { + return ElementHelper.getElementByLinkText('Notification settings'); + } + + /** + * Get Account & Security Link + */ + public get accountSecurityLink() { + return ElementHelper.getElementByLinkText('Account & security'); + } + + /** + * Get Logout Link + */ + public get logoutLink() { + return ElementHelper.getElementByLinkText('Log out'); + } +} diff --git a/connect-automation/page-objects/project-creation-flow/create-project/create-project.helper.ts b/connect-automation/page-objects/project-creation-flow/create-project/create-project.helper.ts new file mode 100644 index 000000000..3d0661baa --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/create-project/create-project.helper.ts @@ -0,0 +1,194 @@ +import { BrowserHelper } from 'topcoder-testing-lib'; +import { CommonHelper } from '../../common-page/common.helper'; +import { IAnswers, IProjectData } from './create-project.model'; +import { CreateProjectPageObject } from './create-project.po'; + +export class CreateProjectPageHelper { + /** + * Initialize Create Project page object + */ + public static initialize() { + this.createProjectPageObject = new CreateProjectPageObject(); + } + + /** + * Open Home page + */ + public static async open() { + await CreateProjectPageObject.open(); + await CommonHelper.waitForPageDisplayed(); + // await BrowserHelper.sleep(5000); + } + + /** + * Verifies user can create design, development & deployment project + * @param projectData Project Creation Form Data + */ + public static async verifyProjectCreation(projectData: IProjectData) { + const appNameWithDate = CommonHelper.appendDate(projectData.appName); + + await this.clickNewProjectButton(); + await this.navigateToViewSolutions(); + await this.clickOnDesignDevelopmentDeploymentButton(); + await this.fillBeforeWeStartForm(projectData.answers); + await this.fillBasicDetailsForm( + appNameWithDate, + projectData.appDescription + ); + await this.fillAppDefinitionForm(projectData); + await this.saveProject(); + await this.goToYourProject(appNameWithDate); + } + + private static createProjectPageObject: CreateProjectPageObject; + + /** + * Verify page is displayed correctly. + * @param expectedTitle page's expected title + */ + private static async verifyFormDisplayed(expectedTitle: string) { + const pageTitle = await this.createProjectPageObject.formPageTitle.getText(); + expect(pageTitle).toBe(expectedTitle); + } + + /** + * Verify page header summary + * @param expectedTitle page's expected title + */ + private static async verifyHeaderSummary(expectedTitle: string) { + const pageTitle = await this.createProjectPageObject.headerSummary.getText(); + expect(pageTitle).toBe(expectedTitle); + } + + /** + * If there is draft project exist, click on create new project button + */ + private static async checkDraftProject() { + const isDraftProject = await this.createProjectPageObject.draftProject.isPresent(); + + if (isDraftProject) { + await this.createProjectPageObject.createNewProject.click(); + } + } + + /** + * Verify new project page is displayed with two options /Talent as Service, Solutions/ + */ + private static async clickNewProjectButton() { + await this.createProjectPageObject.newProjectButton.click(); + await CommonHelper.waitUntilVisibilityOf( + () => this.createProjectPageObject.viewSolutions, + 'Wait for New Project Form', + true + ); + + await this.checkDraftProject(); + + const titles = await this.createProjectPageObject.newProjectPageTitles; + + expect(titles.length).toBe(2); + expect(await titles[0].getText()).toBe('SOLUTIONS'); + expect(await titles[1].getText()).toBe('TALENT AS A SERVICE'); + } + + /** + * Click on "View Solutions" under "SOLUTIONS" section + */ + private static async navigateToViewSolutions() { + await this.createProjectPageObject.viewSolutions.click(); + const title = await this.createProjectPageObject.solutionCatalogTitle.getText(); + expect(title).toBe('TOPCODER SOLUTIONS'); + } + + /** + * Click on "Select" button under Design, Development and Deployment. + */ + private static async clickOnDesignDevelopmentDeploymentButton() { + const selectButton = await this.createProjectPageObject.selectButton(); + await selectButton.click(); + await this.verifyFormDisplayed('Before we start'); + } + + /** + * Fill Before We Start form + * @param answers answers object defined by test data + */ + private static async fillBeforeWeStartForm(answers: IAnswers) { + const { beforeWeStart } = answers; + await CommonHelper.selectInputByContainingText(beforeWeStart); + + await this.createProjectPageObject.nextButton.click(); + + await this.verifyFormDisplayed('Basic Details'); + } + + /** + * Fill Basic Details Form, then click next + * @param appName application name + * @param appDescription app description + */ + private static async fillBasicDetailsForm(appName: string, appDescription) { + const name = this.createProjectPageObject.appNameInput; + await CommonHelper.fillInputField(name, appName); + const description = this.createProjectPageObject.appDescriptionInput; + await CommonHelper.fillInputField(description, appDescription); + + await this.createProjectPageObject.nextButton.click(); + + await this.verifyFormDisplayed('App Definition'); + } + + /** + * Fill App Definition Form, then click next + * @param projectData project data from test data + */ + private static async fillAppDefinitionForm(projectData: IProjectData) { + const { + whatDoYouNeed, + howManyScreens, + willYourAppNeedMoreScreen, + whereShouldAppWork, + howShouldAppWorks, + } = projectData.answers; + await CommonHelper.selectInputByContainingText(whatDoYouNeed); + await CommonHelper.selectInputByContainingText(willYourAppNeedMoreScreen); + await CommonHelper.selectInputByContainingText(howManyScreens); + await this.createProjectPageObject.nextButton.click(); + await this.verifyFormDisplayed('App Definition'); + + await CommonHelper.selectInputByContainingText(whereShouldAppWork); + await CommonHelper.selectInputByContainingText(howShouldAppWorks); + await this.createProjectPageObject.nextButton.click(); + await this.verifyFormDisplayed('App Definition'); + + await this.createProjectPageObject.nextButton.click(); + await this.verifyFormDisplayed('App Definition'); + + const notesInput = this.createProjectPageObject.notesInput; + await CommonHelper.fillInputField(notesInput, projectData.notes); + await this.createProjectPageObject.nextButton.click(); + await this.createProjectPageObject.nextButton.click(); + await this.verifyHeaderSummary('Your Project Estimate'); + } + + /** + * Save project and verify success message + */ + private static async saveProject() { + await this.createProjectPageObject.saveMyProject.click(); + + await this.createProjectPageObject.waitForSubTitle(); + } + + /** + * Navigate to Your Project page and verify recently created project + * @param appName app name + */ + private static async goToYourProject(appName: string) { + await this.createProjectPageObject.yourProjectButton.click(); + + await CommonHelper.waitForProjectTitle(); + + expect(await CommonHelper.projectTitle().getText()).toBe(appName); + } +} diff --git a/connect-automation/page-objects/project-creation-flow/create-project/create-project.model.ts b/connect-automation/page-objects/project-creation-flow/create-project/create-project.model.ts new file mode 100644 index 000000000..3b548153d --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/create-project/create-project.model.ts @@ -0,0 +1,15 @@ +export interface IProjectData { + appName: string; + appDescription: string; + answers: IAnswers; + notes: string; +} + +export interface IAnswers { + beforeWeStart: string; + whatDoYouNeed: string; + willYourAppNeedMoreScreen: string; + howManyScreens: string; + whereShouldAppWork: string; + howShouldAppWorks: string; +} diff --git a/connect-automation/page-objects/project-creation-flow/create-project/create-project.po.ts b/connect-automation/page-objects/project-creation-flow/create-project/create-project.po.ts new file mode 100644 index 000000000..d434a4281 --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/create-project/create-project.po.ts @@ -0,0 +1,148 @@ +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import { logger } from '../../../logger/logger'; +import { ConfigHelper } from '../../../utils/config-helper'; +import { CommonHelper } from '../../common-page/common.helper'; + +export class CreateProjectPageObject { + /** + * Open the Home page + */ + public static async open() { + await BrowserHelper.open(ConfigHelper.getHomePageUrl()); + logger.info('User navigated to Home Page'); + } + + /** + * Get New Project Button + */ + public get newProjectButton() { + return ElementHelper.getElementByLinkText('+ New Project'); + } + + /** + * Get New Project Page Title Elements + */ + public get newProjectPageTitles() { + return ElementHelper.getAllElementsByClassName('_1vZbtq'); + } + + /** + * Get View Solutions button from Create Project Page + */ + public get viewSolutions() { + return ElementHelper.getElementByButtonText('View Solutions'); + } + + /** + * Get Solution Catalog Page's title element + */ + public get solutionCatalogTitle() { + const parentEl = ElementHelper.getElementByClassName( + 'SelectProjectTemplate' + ); + return ElementHelper.getElementByTag('h1', parentEl); + } + + /** + * Get Select Button + */ + public async selectButton() { + const selectButtons = await ElementHelper.getAllElementsByButtonText( + 'Select' + ); + return selectButtons[0]; + } + + /** + * Get Your Project Button + */ + public get yourProjectButton() { + return ElementHelper.getElementContainingText('Go to Project'); + } + + /** + * Get Next Button + */ + public get nextButton() { + return ElementHelper.getElementByButtonText('Next'); + } + + /** + * Get Save My Project button + */ + public get saveMyProject() { + return ElementHelper.getElementByButtonText('Save my project'); + } + + /** + * Get Current Form Page's title element + */ + public get formPageTitle() { + const parentEl = ElementHelper.getElementByClassName('YAZHbL'); + return ElementHelper.getElementByTag('h3', parentEl); + } + + /** + * Get Project Header Summary + */ + public get headerSummary() { + const parentEl = ElementHelper.getElementByClassName('form-header-summary'); + return ElementHelper.getElementByTag('h2', parentEl); + } + + /** + * Get App Name Input + */ + public get appNameInput() { + return ElementHelper.getElementByName('name'); + } + + /** + * Get App Description Input + */ + public get appDescriptionInput() { + return ElementHelper.getElementByName('description'); + } + + /** + * Get Draft Project title + */ + public get draftProject() { + return ElementHelper.getElementByClassName('IncompleteProjectConfirmation'); + } + + /** + * Get Create new Project button + */ + public get createNewProject() { + return ElementHelper.getElementByButtonText('Create a new project'); + } + + /** + * Get Notes input field + */ + public get notesInput() { + return ElementHelper.getElementByName('details.apiDefinition.notes'); + } + + /** + * Get sub title + */ + public get subTitle() { + return ElementHelper.getElementContainingText( + 'Your project has been created' + ); + } + + /** + * Wait for subtitle to show + */ + public async waitForSubTitle() { + await CommonHelper.waitUntilVisibilityOf( + () => this.subTitle, + 'Wait for success message', + true + ); + logger.info('Success Message Displayed'); + } +} diff --git a/connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.ts b/connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.ts new file mode 100644 index 000000000..c337d6535 --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.ts @@ -0,0 +1,60 @@ +import { BrowserHelper } from 'topcoder-testing-lib'; +import { CommonHelper } from '../../common-page/common.helper'; +import { InviteCopilotPageObject } from './invite-copilot.po'; + +export class InviteCopilotHelper { + /** + * Initialize Invite Copilot page object + */ + public static initialize() { + this.inviteCopilotPageObject = new InviteCopilotPageObject(); + } + + /** + * Open Home Page + */ + public static async open() { + await InviteCopilotPageObject.open(); + await CommonHelper.waitForPageDisplayed(); + // await BrowserHelper.sleep(8000); + } + + /** + * Verify whether the Copilot Manager can invite to project + * @param copilotHandle copilot handle from test data + */ + public static async verifyManageProject(copilotHandle: string) { + await CommonHelper.goToRecentlyCreatedProject(); + await this.clickOnManageLink(); + await this.sendInvitationToCopilot(copilotHandle); + } + + private static inviteCopilotPageObject: InviteCopilotPageObject; + + /** + * Click on Manage link of Copilot Section of Left menu + */ + private static async clickOnManageLink() { + await CommonHelper.waitAndClickElement(this.inviteCopilotPageObject.manageCopilotLink); + await BrowserHelper.sleep(2000); + } + + /** + * Send the invitation to Copilot Manager + * @param copilotHandle copilot handle from test data + */ + private static async sendInvitationToCopilot(copilotHandle: string) { + const inputField = this.inviteCopilotPageObject.inviteInputField; + await this.inviteCopilotPageObject.dropdownElement.click(); + await BrowserHelper.sleep(200); + await inputField.sendKeys(copilotHandle); + await this.inviteCopilotPageObject.selectedOption.click(); + await this.inviteCopilotPageObject.sendInviteButton.click(); + const alertElement = CommonHelper.alertBox(); + await CommonHelper.waitForSuccessAlert(alertElement); + + expect(await CommonHelper.successAlert().getText()).toBe( + `YOU'VE SUCCESSFULLY INVITED MEMBER(S).` + ); + } +} diff --git a/connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.ts b/connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.ts new file mode 100644 index 000000000..7622346b0 --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.ts @@ -0,0 +1,66 @@ +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import { logger } from '../../../logger/logger'; +import { ConfigHelper } from '../../../utils/config-helper'; + +export class InviteCopilotPageObject { + /** + * Open Home page + */ + public static async open() { + await BrowserHelper.open(ConfigHelper.getHomePageUrl()); + logger.info('User navigated to Home Page'); + } + + /** + * Get Manage Copilot Link From Left Menu + */ + public get manageCopilotLink() { + const copilotDiv = ElementHelper.getElementByCssContainingText( + 'span._1hKIoG', + 'Copilot' + ); + + return ElementHelper.getElementByXPath( + 'following-sibling::span', + copilotDiv + ); + } + + /** + * Get Copilot invitation dropdown element + */ + public get dropdownElement() { + return ElementHelper.getElementByClassName('react-select__placeholder'); + } + + /** + * Get Copilot invitation input field + */ + public get inviteInputField() { + const parentEl = ElementHelper.getElementByClassName('react-select__input'); + return ElementHelper.getElementByTag('input', parentEl); + } + + /** + * Get Selected option element from dropdown + */ + public get selectedOption() { + return ElementHelper.getElementByClassName( + 'react-select__option--is-focused' + ); + } + + /** + * Get Send Invite button + */ + public get sendInviteButton() { + return ElementHelper.getElementByButtonText('Send Invite'); + } + + /** + * Get Invited Copilots List Elements + */ + public async invitedCopilots() { + return ElementHelper.getAllElementsByClassName('span-name'); + } +} diff --git a/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts b/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts new file mode 100644 index 000000000..6c4bd1f30 --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts @@ -0,0 +1,159 @@ +import _ = require('lodash'); +import { BrowserHelper } from 'topcoder-testing-lib'; +import { CommonHelper } from '../../common-page/common.helper'; +import { ISearchProject } from './projects.model'; +import { ProjectsPageObject } from './projects.po'; + +export class ProjectsHelper { + /** + * Initialize Projects page object + */ + public static initialize() { + this.projectsPageObject = new ProjectsPageObject(); + } + + /** + * Opens the Create Project page + */ + public static async open() { + await ProjectsPageObject.open(); + await CommonHelper.waitForPageDisplayed(); + await BrowserHelper.sleep(4000); + } + + /** + * Verify whether the Copilot can Join the project + */ + public static async verifyCopilotProjectJoin() { + // Go to Recently created project + await CommonHelper.goToRecentlyCreatedProject(); + await BrowserHelper.sleep(4000); + + // Click on Join Project button + await this.projectsPageObject.joinProjectButton.click(); + const alertElement = CommonHelper.alertBox(); + await CommonHelper.waitForSuccessAlert(alertElement); + + // Verify Success Alert + expect(await CommonHelper.successAlert().getText()).toBe( + `YOU'VE SUCCESSFULLY JOINED THE PROJECT.` + ); + } + + /** + * Verify user can search for projects using project name, user handle, ref code + * @param searchProject object for search + */ + public static async verifyProjectSearch(searchProject: ISearchProject) { + await BrowserHelper.sleep(3000); + const allProjectsBeforeSearch = await this.projectsPageObject.projectTitles(); + const beforeSearchLength = allProjectsBeforeSearch.length; + const firstProjectBeforeSearch = await allProjectsBeforeSearch[0].getText(); + + // Search by project name + await this.projectsPageObject.fillSearchBar(searchProject.searchByName); + await this.verifyAllProjects(searchProject.searchByName); + await this.clickCancelButton(); + + // Search by Ref + await this.projectsPageObject.fillSearchBar(searchProject.searchByRef); + await this.verifyProjectWithRef(searchProject.searchByRef); + + // Click on Clear button + await this.clickCancelButton(); + + // Search by Handle + await this.projectsPageObject.fillSearchBar(searchProject.searchByHandle); + await this.verifyProjectSearchByHandle(searchProject.searchByHandle); + await this.clickCancelButton(); + + const allProjectsAfterSearch = await this.projectsPageObject.projectTitles(); + + expect(beforeSearchLength).toEqual(allProjectsAfterSearch.length); + + expect(firstProjectBeforeSearch).toEqual( + await allProjectsAfterSearch[0].getText() + ); + } + + /** + * verify user can switch between the Project tabs + */ + public static async verifySwitchTabs() { + const tabNames = [ + 'Active', + 'In review', + 'Reviewed', + 'Completed', + 'Cancelled', + 'Paused', + 'All Projects', + ]; + + const expectedLinkStatuses = [ + 'active', + 'in_review', + 'reviewed', + 'completed', + 'cancelled', + 'paused', + '', + ]; + + tabNames.map(async (currentTab, index) => { + await BrowserHelper.sleep(1000); + const activeTab = await this.projectsPageObject.tabElement(currentTab); + await activeTab.click(); + const currentUrl = await BrowserHelper.getCurrentUrl(); + expect(currentUrl).toContain(expectedLinkStatuses[index]); + }); + } + + private static projectsPageObject: ProjectsPageObject; + + /** + * Verify all projects + * @param searchTerm search term + */ + private static async verifyAllProjects(searchTerm: string) { + const searchResultElements = await this.projectsPageObject.projectTitles(); + searchResultElements.map(async (project) => { + const projectName = await project.getText(); + expect(projectName.toLowerCase()).toContain(searchTerm); + }); + await BrowserHelper.sleep(1000); + } + + /** + * Verify projects with ref + * @param searchTerm search term + */ + private static async verifyProjectWithRef(searchTerm: string) { + const ref = await this.projectsPageObject.refText.getText(); + expect(ref).toBe(searchTerm); + + await BrowserHelper.sleep(1000); + } + + /** + * Click on clear button + */ + private static async clickCancelButton() { + await this.projectsPageObject.clearButton.click(); + await BrowserHelper.sleep(1000); + } + + /** + * Verify project search results by handle + * @param memberHandle member handle from test data + */ + private static async verifyProjectSearchByHandle(memberHandle: string) { + await CommonHelper.goToRecentlyCreatedProject(); + await BrowserHelper.waitUntilVisibilityOf(this.projectsPageObject.firstMember); + expect(await this.projectsPageObject.firstMember.getText()).toBe( + memberHandle + ); + await this.projectsPageObject.backButton.click(); + await BrowserHelper.sleep(5000); + } +} diff --git a/connect-automation/page-objects/project-creation-flow/projects/projects.model.ts b/connect-automation/page-objects/project-creation-flow/projects/projects.model.ts new file mode 100644 index 000000000..040088f0d --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/projects/projects.model.ts @@ -0,0 +1,5 @@ +export interface ISearchProject { + searchByName: string; + searchByRef: string; + searchByHandle: string; +} diff --git a/connect-automation/page-objects/project-creation-flow/projects/projects.po.ts b/connect-automation/page-objects/project-creation-flow/projects/projects.po.ts new file mode 100644 index 000000000..704fc65a8 --- /dev/null +++ b/connect-automation/page-objects/project-creation-flow/projects/projects.po.ts @@ -0,0 +1,110 @@ +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import { logger } from '../../../logger/logger'; +import { ConfigHelper } from '../../../utils/config-helper'; +import { CommonHelper } from '../../common-page/common.helper'; + +export class ProjectsPageObject { + /** + * Open the Home page + */ + public static async open() { + await BrowserHelper.open(ConfigHelper.getHomePageUrl()); + logger.info('User navigated to Home Page'); + } + + /** + * Get Join Project Button + */ + public get joinProjectButton() { + return ElementHelper.getElementByButtonText('Join project'); + } + + /** + * Get Search Input + */ + public get searchInput() { + return ElementHelper.getElementByClassName('search-bar__text'); + } + + /** + * Get Search Button + */ + public get searchButton() { + return ElementHelper.getElementByClassName('search-icon-wrap'); + } + + /** + * Get Clear Button + */ + public get clearButton() { + return ElementHelper.getElementByClassName('search-bar__clear'); + } + + /** + * Get All Projects By Title + */ + public async projectTitles() { + return ElementHelper.getAllElementsByClassName('link-title'); + } + + /** + * Fill search bar with desired input + * @param inputText input text + */ + public async fillSearchBar(inputText: string) { + const searchInput = this.searchInput; + await CommonHelper.fillInputField(searchInput, inputText); + await this.searchButton.click(); + await BrowserHelper.sleep(1000); + } + + /** + * Get Tab Element + * @param tabName tab name + */ + public async tabElement(tabName: string) { + const parentEl = ElementHelper.getElementByClassName('_3M4SZg'); + return ElementHelper.getElementByCssContainingText( + 'li._2ZbGEn', + tabName, + parentEl + ); + } + + /** + * Get Project Dashboard Element + */ + public get projectDashboard() { + const parentEl = ElementHelper.getElementByClassName('WtXOeL _3rjDL1'); + return ElementHelper.getElementContainingText('Dashboard', parentEl); + } + + /** + * Get Active Tab Element + */ + public async activeTab() { + const tabNames = ElementHelper.getAllElementsByClassName('_2ZbGEn E7SY3s'); + return tabNames[0]; + } + + /** + * Get first member's element + */ + public get firstMember() { + return ElementHelper.getElementByClassName('GV60ta'); + } + + /** + * Get back to dashboard button + */ + public get backButton() { + return ElementHelper.getElementByClassName('_3Ielx-'); + } + + /** + * Get ref containing element + */ + public get refText() { + return ElementHelper.getElementByClassName('txt-gray-md'); + } +} diff --git a/connect-automation/temp/conf.js b/connect-automation/temp/conf.js new file mode 100644 index 000000000..dace4b60f --- /dev/null +++ b/connect-automation/temp/conf.js @@ -0,0 +1,59 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var reporters = require("jasmine-reporters"); +var HtmlReporter = require("protractor-beautiful-reporter"); +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +exports.config = { + directConnect: true, + // Capabilities to be passed to the webdriver instance. + capabilities: { + browserName: 'chrome', + chromeOptions: { + args: [ + '--headless', + '--disable-gpu', + '--no-sandbox', + '--window-size=1325x744', + ], + }, + }, + // Framework to use. Jasmine is recommended. + framework: 'jasmine2', + specs: [ + '../temp/test-suites/profile-update/my-profile.spec.js', + '../temp/test-suites/profile-update/left-menu.spec.js', + '../temp/test-suites/profile-update/user-profile-menu.spec.js', + '../temp/test-suites/profile-update/footer-menu.spec.js', + '../temp/test-suites/project-creation-flow/create-project.spec.js', + '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', + '../temp/test-suites/project-creation-flow/projects.spec.js', + '../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' + ], + // Options to be passed to Jasmine. + jasmineNodeOpts: { + defaultTimeoutInterval: 1200000, + isVerbose: true, + showColors: true, + }, + onPrepare: function () { + topcoder_testing_lib_1.BrowserHelper.maximize(); + topcoder_testing_lib_1.BrowserHelper.implicitlyWait(5000); + var junitReporter = new reporters.JUnitXmlReporter({ + consolidateAll: false, + savePath: 'test-results', + }); + jasmine.getEnv().addReporter(junitReporter); + jasmine.getEnv().addReporter(new HtmlReporter({ + baseDirectory: 'test-results', + docName: 'TestResult.html', + docTitle: 'Test Automation Execution Report', + gatherBrowserLogs: true, + jsonsSubfolder: 'jsons', + preserveDirectory: false, + screenshotsSubfolder: 'screenshots', + takeScreenShotsForSkippedSpecs: true, + takeScreenShotsOnlyForFailedSpecs: true, + }).getJasmine2Reporter()); + }, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2NvbmYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBZ0Q7QUFDaEQsNERBQStEO0FBQy9ELDZEQUFxRDtBQWNyRCxPQUFPLENBQUMsTUFBTSxHQUFHO0lBQ2YsYUFBYSxFQUFFLElBQUk7SUFFbkIsdURBQXVEO0lBQ3ZELFlBQVksRUFBRTtRQUNaLFdBQVcsRUFBRSxRQUFRO1FBQ3JCLGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRTtnQkFDSixZQUFZO2dCQUNaLGVBQWU7Z0JBQ2YsY0FBYztnQkFDZCx3QkFBd0I7YUFDekI7U0FDRjtLQUNGO0lBRUQsNENBQTRDO0lBQzVDLFNBQVMsRUFBRSxVQUFVO0lBRXJCLEtBQUssRUFBRTtRQUNMLHVEQUF1RDtRQUN2RCxzREFBc0Q7UUFDdEQsOERBQThEO1FBQzlELHdEQUF3RDtRQUN4RCxrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLDREQUE0RDtRQUM1RCxrRUFBa0U7S0FDbkU7SUFFRCxtQ0FBbUM7SUFDbkMsZUFBZSxFQUFFO1FBQ2Ysc0JBQXNCLEVBQUUsT0FBTztRQUMvQixTQUFTLEVBQUUsSUFBSTtRQUNmLFVBQVUsRUFBRSxJQUFJO0tBQ2pCO0lBRUQsU0FBUyxFQUFFO1FBQ1Qsb0NBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixvQ0FBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFNLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNuRCxjQUFjLEVBQUUsS0FBSztZQUNyQixRQUFRLEVBQUUsY0FBYztTQUN6QixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQzFCLElBQUksWUFBWSxDQUFDO1lBQ2YsYUFBYSxFQUFFLGNBQWM7WUFDN0IsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUsa0NBQWtDO1lBQzVDLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsY0FBYyxFQUFFLE9BQU87WUFDdkIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixvQkFBb0IsRUFBRSxhQUFhO1lBQ25DLDhCQUE4QixFQUFFLElBQUk7WUFDcEMsaUNBQWlDLEVBQUUsSUFBSTtTQUN4QyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FDekIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/config/app-config.json b/connect-automation/temp/config/app-config.json new file mode 100644 index 000000000..55caea2ec --- /dev/null +++ b/connect-automation/temp/config/app-config.json @@ -0,0 +1,17 @@ +{ + "Timeout": { + "FieldVisibility": 15000, + "ElementVisibility": 15000, + "ElementInvisibility": 15000, + "ElementPresence": 15000, + "ElementClickable": 15000, + "PageLoad": 300000 + }, + "LoggerErrors": { + "ElementVisibilty": "Element did not display within timeout", + "ElementInvisibilty": "Element did not become invisible within timeout", + "ElementPresence": "Element was not present within timeout", + "ElementClickable": "Element was not clickable within timeout", + "PageLoad": "Page did not load within timeout" + } +} diff --git a/connect-automation/temp/config/config.json b/connect-automation/temp/config/config.json new file mode 100644 index 000000000..975111d61 --- /dev/null +++ b/connect-automation/temp/config/config.json @@ -0,0 +1,26 @@ +{ + "env": "dev", + "username": "mailmemakar402", + "password": "P@ssw0rd", + "customerRole": { + "email": "topcoderconnect+Customer@gmail.com", + "password": "appirio123" + }, + "copilotRole": { + "email": "topcoderconnect+Copilot@gmail.com", + "password": "appirio123" + }, + "copilotManagerRole": { + "email": "topcoderconnect+CopilotManager@gmail.com", + "password": "appirio123" + }, + "homePageUrl": "https://connect.topcoder-dev.com/", + "loginUrl": "https://auth.topcoder-dev.com", + "redirectLoginUrl": "https://accounts-auth0.topcoder-dev.com/?regSource=tcBusiness&retUrl=https://connect.topcoder-dev.com", + "logoutUrl": "https://accounts-auth0.topcoder-dev.com/?logout=true&retUrl=https://connect.topcoder-dev.com", + "myProfileUrl": "https://connect.topcoder-dev.com/settings/profile", + "notificationSettingsUrl": "https://connect.topcoder-dev.com/settings/notifications", + "accountAndSecurityUrl": "https://connect.topcoder-dev.com/settings/account", + "notificationsUrl": "https://connect.topcoder-dev.com/notifications", + "allProjectsUrl": "https://connect.topcoder-dev.com/projects" +} diff --git a/connect-automation/temp/logger/logger.js b/connect-automation/temp/logger/logger.js new file mode 100644 index 000000000..cba1edbb1 --- /dev/null +++ b/connect-automation/temp/logger/logger.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.logger = void 0; +var winston_1 = require("winston"); +exports.logger = winston_1.createLogger({ + transports: [new winston_1.transports.Console()] +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbG9nZ2VyL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUQ7QUFDdEMsUUFBQSxNQUFNLEdBQUcsc0JBQVksQ0FBQztJQUNqQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLG9CQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDdkMsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/page-objects/common-page/common.helper.js b/connect-automation/temp/page-objects/common-page/common.helper.js new file mode 100644 index 000000000..62d59cfa6 --- /dev/null +++ b/connect-automation/temp/page-objects/common-page/common.helper.js @@ -0,0 +1,514 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CommonHelper = void 0; +var moment = require("moment"); +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var appconfig = require("../../config/app-config.json"); +var logger_1 = require("../../logger/logger"); +var config_helper_1 = require("../../utils/config-helper"); +var login_helper_1 = require("../login/login.helper"); +/** + * Wait until condition return true + * @param func function for checking condition + * @param extraMessage extra error message when timeout + * @param isPageLoad wait for loading page + */ +var waitUntil = function (func, extraMessage, isPageLoad) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntil(func, isPageLoad + ? appconfig.Timeout.PageLoad + : appconfig.Timeout.ElementVisibility, (isPageLoad + ? appconfig.LoggerErrors.PageLoad + : appconfig.LoggerErrors.ElementVisibilty) + + '.' + + extraMessage)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }; +exports.CommonHelper = { + /** + * Log in browser + * @param username user name + * @param password password + */ + login: function (username, password) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.initialize()]; + case 1: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.maximize()]; + case 2: + _a.sent(); + return [4 /*yield*/, login_helper_1.LoginPageHelper.open()]; + case 3: + _a.sent(); + return [4 /*yield*/, login_helper_1.LoginPageHelper.login(username, password)]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Log out browser + */ + logout: function () { + return __awaiter(this, void 0, void 0, function () { + var e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 4]); + return [4 /*yield*/, login_helper_1.LoginPageHelper.logout()]; + case 1: + _a.sent(); + return [3 /*break*/, 4]; + case 2: + e_1 = _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.restart()]; + case 3: + _a.sent(); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); + }, + /** + * Wait until the element becomes visible + * @param {TcElementImpl} tcElement element + * @param {TcElementImpl} extraMessage extra message + * @param {Boolean} isPageLoad is loading page + */ + waitUntilVisibilityOf: function (func, extraMessage, isPageLoad) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, waitUntil(function () { return function () { return __awaiter(_this, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 2, , 3]); + return [4 /*yield*/, func().isDisplayed()]; + case 1: return [2 /*return*/, _b.sent()]; + case 2: + _a = _b.sent(); + // element is not attached to the DOM of a page. + return [2 /*return*/, false]; + case 3: return [2 /*return*/]; + } + }); + }); }; }, extraMessage, isPageLoad)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Wait until the element is present + * @param {TcElementImpl} tcElement element + * @param {TcElementImpl} extraMessage extra message + * @param {Boolean} isPageLoad is loading page + */ + waitUntilPresenceOf: function (func, extraMessage, isPageLoad) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntil(function () { return function () { return __awaiter(_this, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 2, , 3]); + return [4 /*yield*/, func().isPresent()]; + case 1: return [2 /*return*/, _b.sent()]; + case 2: + _a = _b.sent(); + // element is not attached to the DOM of a page. + return [2 /*return*/, false]; + case 3: return [2 /*return*/]; + } + }); + }); }; }, isPageLoad + ? appconfig.Timeout.PageLoad + : appconfig.Timeout.ElementPresence, (isPageLoad + ? appconfig.LoggerErrors.PageLoad + : appconfig.LoggerErrors.ElementPresence) + + '.' + + extraMessage)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Wait for Page to be displayed + */ + waitForPageDisplayed: function () { + return __awaiter(this, void 0, void 0, function () { + var rootId; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + rootId = topcoder_testing_lib_1.ElementHelper.getElementById('root'); + return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return rootId; }, 'Wait for home page', true)]; + case 1: + _a.sent(); + return [2 /*return*/, rootId]; + } + }); + }); + }, + /** + * Fill Input Field with value + * @param el target element + * @param value value to fill + */ + fillInputField: function (el, value) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + el.click(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(100)]; + case 1: + _a.sent(); + el.clear(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(100)]; + case 2: + _a.sent(); + el.sendKeys(value); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Select input by its containing text + * @param text desired text value + */ + selectInputByContainingText: function (text) { + return __awaiter(this, void 0, void 0, function () { + var selectedOption; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + selectedOption = topcoder_testing_lib_1.ElementHelper.getElementContainingText(text); + return [4 /*yield*/, selectedOption.click()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Get element that contain text + * @param tag tag + * @param text text contain + * @param parent parent element + */ + findElementByText: function (tag, text, parent) { + return topcoder_testing_lib_1.ElementHelper.getElementByXPath('//' + tag + '[contains(text(), "' + text + '")]', parent); + }, + /** + * Find desired value from dropdown menu + * @param text search value + * @param parent (optional) parent element + */ + findTextFromDropDown: function (text, parent) { + return __awaiter(this, void 0, void 0, function () { + var xpath, dropDowns; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + xpath = "//div[contains(text(), \"" + text + "\")]"; + return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath, parent)]; + case 1: + dropDowns = _a.sent(); + return [2 /*return*/, dropDowns]; + } + }); + }); + }, + /** + * Compare given url to current page's url + * @param url expected page url + */ + verifyPageUrl: function (url) { + return __awaiter(this, void 0, void 0, function () { + var currentUrl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; + case 1: + currentUrl = _a.sent(); + expect(currentUrl).toContain(url); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Navigate to All Projects Page + */ + navigateToAllProjectsPage: function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getAllProjectsUrl())]; + case 1: + _a.sent(); + return [4 /*yield*/, exports.CommonHelper.waitForPageDisplayed()]; + case 2: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Append date time to given input text + * @param inputText input text + */ + appendDate: function (inputText) { + return inputText + "-" + moment().format(); + }, + /** + * Get Project Title + */ + projectTitle: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_1Iqc2q'); + }, + /** + * Get Page Title + */ + pageTitle: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('TopBarContainer'); + }, + /** + * Get Loading Indicator + */ + loadingIndicator: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('loading-indicator'); + }, + /** + * Wait for project title to appear + */ + waitForProjectTitle: function () { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return _this.projectTitle(); }, 'Wait for project title', true)]; + case 1: + _a.sent(); + logger_1.logger.info('My Project Page Loaded'); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Wait for page title to appear + */ + waitForPageTitle: function () { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return _this.pageTitle(); }, 'Wait for project title', true)]; + case 1: + _a.sent(); + logger_1.logger.info('Home Page Loaded'); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Get recent project title element + * @param isCustomer true if current logged in user had customer role + */ + firstProject: function (isCustomer) { + if (isCustomer === void 0) { isCustomer = false; } + return __awaiter(this, void 0, void 0, function () { + var projectClassName, titles; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + projectClassName = isCustomer ? 'project-header-details' : 'project-title'; + return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName(projectClassName)]; + case 1: + titles = _a.sent(); + return [2 /*return*/, titles[0]]; + } + }); + }); + }, + /** + * Navigate to first Project From Dashboard + * @param isCustomer true if current logged in user had customer role + */ + goToRecentlyCreatedProject: function (isCustomer) { + if (isCustomer === void 0) { isCustomer = false; } + return __awaiter(this, void 0, void 0, function () { + var _a, _b, title; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(40000)]; + case 1: + _c.sent(); + _b = (_a = topcoder_testing_lib_1.BrowserHelper).waitUntilVisibilityOf; + return [4 /*yield*/, this.firstProject(isCustomer)]; + case 2: return [4 /*yield*/, _b.apply(_a, [_c.sent()])]; + case 3: + _c.sent(); + return [4 /*yield*/, this.firstProject(isCustomer)]; + case 4: + title = _c.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilClickableOf(title)]; + case 5: + _c.sent(); + return [4 /*yield*/, title.click()]; + case 6: + _c.sent(); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Get Alert Box Element + */ + alertBox: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('s-alert-box-inner'); + }, + /** + * Get Success Alert Span + */ + successAlert: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByTag('span', this.alertBox()); + }, + /** + * Wait for success alert to show + */ + waitForSuccessAlert: function (target) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return target; }, 'Wait for success alert message', true)]; + case 1: + _a.sent(); + logger_1.logger.info('Success Alert Displayed'); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Wait until element visibility and click + */ + waitAndClickElement: function (targetEl) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilVisibilityOf(targetEl)]; + case 1: + _a.sent(); + return [4 /*yield*/, targetEl.click()]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Verify success alert shows correct message + * @param expectedText expected success text to appear + */ + verifySuccessAlert: function (expectedText) { + return __awaiter(this, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, this.waitForSuccessAlert(this.alertBox())]; + case 1: + _b.sent(); + _a = expect; + return [4 /*yield*/, this.successAlert().getText()]; + case 2: + _a.apply(void 0, [_b.sent()]).toBe(expectedText); + return [2 /*return*/]; + } + }); + }); + }, + /** + * Necessary input format for calendar input + */ + dateFormat: function () { + return '00YYYYMMDD'; + }, + /** + * Get Create Phase Page title + */ + get createPhasePageTitle() { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_2edGvU'); + }, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9jb21tb24tcGFnZS9jb21tb24uaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFrQztBQUVsQyw2REFBb0U7QUFDcEUsd0RBQTBEO0FBQzFELDhDQUE2QztBQUc3QywyREFBeUQ7QUFDekQsc0RBQXdEO0FBRXhEOzs7OztHQUtHO0FBQ0gsSUFBTSxTQUFTLEdBQUcsVUFDaEIsSUFBZSxFQUNmLFlBQW9CLEVBQ3BCLFVBQW1COzs7b0JBRW5CLHFCQUFNLG9DQUFhLENBQUMsU0FBUyxDQUMzQixJQUFJLEVBQ0osVUFBVTtvQkFDUixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRO29CQUM1QixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFDdkMsQ0FBQyxVQUFVO29CQUNULENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVE7b0JBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO29CQUMxQyxHQUFHO29CQUNILFlBQVksQ0FDZixFQUFBOztnQkFWRCxTQVVDLENBQUM7Ozs7S0FDSCxDQUFDO0FBRVcsUUFBQSxZQUFZLEdBQUc7SUFDMUI7Ozs7T0FJRztJQUNHLEtBQUssRUFBWCxVQUFZLFFBQWdCLEVBQUUsUUFBZ0I7Ozs7NEJBQzVDLHFCQUFNLG9DQUFhLENBQUMsVUFBVSxFQUFFLEVBQUE7O3dCQUFoQyxTQUFnQyxDQUFDO3dCQUNqQyxxQkFBTSxvQ0FBYSxDQUFDLFFBQVEsRUFBRSxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFFL0IscUJBQU0sOEJBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQTVCLFNBQTRCLENBQUM7d0JBQzdCLHFCQUFNLDhCQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBQTs7d0JBQS9DLFNBQStDLENBQUM7Ozs7O0tBQ2pEO0lBRUQ7O09BRUc7SUFDRyxNQUFNOzs7Ozs7O3dCQUVSLHFCQUFNLDhCQUFlLENBQUMsTUFBTSxFQUFFLEVBQUE7O3dCQUE5QixTQUE4QixDQUFDOzs7O3dCQUUvQixxQkFBTSxvQ0FBYSxDQUFDLE9BQU8sRUFBRSxFQUFBOzt3QkFBN0IsU0FBNkIsQ0FBQzs7Ozs7O0tBRWpDO0lBRUQ7Ozs7O09BS0c7SUFDRyxxQkFBcUIsRUFBM0IsVUFDRSxJQUFxQixFQUNyQixZQUFvQixFQUNwQixVQUFtQjs7Ozs7NEJBRW5CLHFCQUFNLFNBQVMsQ0FDYixjQUFNLE9BQUE7Ozs7Ozt3Q0FFSyxxQkFBTSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBQTs0Q0FBakMsc0JBQU8sU0FBMEIsRUFBQzs7O3dDQUVsQyxnREFBZ0Q7d0NBQ2hELHNCQUFPLEtBQUssRUFBQzs7Ozs2QkFFaEIsRUFQSyxDQU9MLEVBQ0QsWUFBWSxFQUNaLFVBQVUsQ0FDWCxFQUFBOzt3QkFYRCxTQVdDLENBQUM7Ozs7O0tBQ0g7SUFFRDs7Ozs7T0FLRztJQUNHLG1CQUFtQixFQUF6QixVQUNFLElBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLFVBQW1COzs7Ozs0QkFFbkIscUJBQU0sb0NBQWEsQ0FBQyxTQUFTLENBQzNCLGNBQU0sT0FBQTs7Ozs7O3dDQUVLLHFCQUFNLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFBOzRDQUEvQixzQkFBTyxTQUF3QixFQUFDOzs7d0NBRWhDLGdEQUFnRDt3Q0FDaEQsc0JBQU8sS0FBSyxFQUFDOzs7OzZCQUVoQixFQVBLLENBT0wsRUFDRCxVQUFVOzRCQUNSLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVE7NEJBQzVCLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFDckMsQ0FBQyxVQUFVOzRCQUNULENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVE7NEJBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQzs0QkFDekMsR0FBRzs0QkFDSCxZQUFZLENBQ2YsRUFBQTs7d0JBakJELFNBaUJDLENBQUM7Ozs7O0tBQ0g7SUFFRDs7T0FFRztJQUNHLG9CQUFvQjs7Ozs7O3dCQUNsQixNQUFNLEdBQUcsb0NBQWEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBRXBELHFCQUFNLG9CQUFZLENBQUMscUJBQXFCLENBQ3RDLGNBQU0sT0FBQSxNQUFNLEVBQU4sQ0FBTSxFQUNaLG9CQUFvQixFQUNwQixJQUFJLENBQ0wsRUFBQTs7d0JBSkQsU0FJQyxDQUFDO3dCQUNGLHNCQUFPLE1BQU0sRUFBQzs7OztLQUNmO0lBRUQ7Ozs7T0FJRztJQUNHLGNBQWMsRUFBcEIsVUFBcUIsRUFBaUIsRUFBRSxLQUFhOzs7Ozt3QkFDbkQsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNYLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFDL0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNYLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFDL0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Ozs7S0FDcEI7SUFFRDs7O09BR0c7SUFDRywyQkFBMkIsRUFBakMsVUFBa0MsSUFBWTs7Ozs7O3dCQUN0QyxjQUFjLEdBQUcsb0NBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEUscUJBQU0sY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBNUIsU0FBNEIsQ0FBQzs7Ozs7S0FDOUI7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixFQUFqQixVQUFrQixHQUFXLEVBQUUsSUFBWSxFQUFFLE1BQXNCO1FBQ2pFLE9BQU8sb0NBQWEsQ0FBQyxpQkFBaUIsQ0FDcEMsSUFBSSxHQUFHLEdBQUcsR0FBRyxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsS0FBSyxFQUNqRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0csb0JBQW9CLEVBQTFCLFVBQTJCLElBQVksRUFBRSxNQUFzQjs7Ozs7O3dCQUN2RCxLQUFLLEdBQUcsOEJBQTJCLElBQUksU0FBSyxDQUFDO3dCQUNqQyxxQkFBTSxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBQTs7d0JBQXBFLFNBQVMsR0FBRyxTQUF3RDt3QkFFMUUsc0JBQU8sU0FBUyxFQUFDOzs7O0tBQ2xCO0lBRUQ7OztPQUdHO0lBQ0csYUFBYSxFQUFuQixVQUFvQixHQUFXOzs7Ozs0QkFDVixxQkFBTSxvQ0FBYSxDQUFDLGFBQWEsRUFBRSxFQUFBOzt3QkFBaEQsVUFBVSxHQUFHLFNBQW1DO3dCQUN0RCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzs7OztLQUNuQztJQUVEOztPQUVHO0lBQ0cseUJBQXlCOzs7OzRCQUM3QixxQkFBTSxvQ0FBYSxDQUFDLElBQUksQ0FBQyw0QkFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBQTs7d0JBQTFELFNBQTBELENBQUM7d0JBQzNELHFCQUFNLG9CQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7d0JBQzFDLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLEVBQVYsVUFBVyxTQUFpQjtRQUMxQixPQUFVLFNBQVMsU0FBSSxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUksQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLG9DQUFhLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLG9DQUFhLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDRyxtQkFBbUI7Ozs7OzRCQUN2QixxQkFBTSxvQkFBWSxDQUFDLHFCQUFxQixDQUN0QyxjQUFNLE9BQUEsS0FBSSxDQUFDLFlBQVksRUFBRSxFQUFuQixDQUFtQixFQUN6Qix3QkFBd0IsRUFDeEIsSUFBSSxDQUNMLEVBQUE7O3dCQUpELFNBSUMsQ0FBQzt3QkFDRixlQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7Ozs7O0tBQ3ZDO0lBRUQ7O09BRUc7SUFDRyxnQkFBZ0I7Ozs7OzRCQUNwQixxQkFBTSxvQkFBWSxDQUFDLHFCQUFxQixDQUN0QyxjQUFNLE9BQUEsS0FBSSxDQUFDLFNBQVMsRUFBRSxFQUFoQixDQUFnQixFQUN0Qix3QkFBd0IsRUFDeEIsSUFBSSxDQUNMLEVBQUE7O3dCQUpELFNBSUMsQ0FBQzt3QkFDRixlQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Ozs7O0tBQ2pDO0lBRUQ7OztPQUdHO0lBQ0csWUFBWSxZQUFDLFVBQWtCO1FBQWxCLDJCQUFBLEVBQUEsa0JBQWtCOzs7Ozs7d0JBQzdCLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTt3QkFDakUscUJBQU0sb0NBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFBOzt3QkFBeEUsTUFBTSxHQUFHLFNBQStEO3dCQUU5RSxzQkFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUM7Ozs7S0FDbEI7SUFFRDs7O09BR0c7SUFDRywwQkFBMEIsWUFBQyxVQUFrQjtRQUFsQiwyQkFBQSxFQUFBLGtCQUFrQjs7Ozs7NEJBQ2pELHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFBOzt3QkFBaEMsU0FBZ0MsQ0FBQzt3QkFDM0IsS0FBQSxDQUFBLEtBQUEsb0NBQWEsQ0FBQSxDQUFDLHFCQUFxQixDQUFBO3dCQUFDLHFCQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUE7NEJBQTdFLHFCQUFNLGNBQW9DLFNBQW1DLEVBQUMsRUFBQTs7d0JBQTlFLFNBQThFLENBQUM7d0JBQ2pFLHFCQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUE7O3dCQUEzQyxLQUFLLEdBQUcsU0FBbUM7d0JBQ2pELHFCQUFNLG9DQUFhLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUE7O3dCQUEvQyxTQUErQyxDQUFDO3dCQUNoRCxxQkFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUFuQixTQUFtQixDQUFDOzs7OztLQUNyQjtJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDVixPQUFPLG9DQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDRyxtQkFBbUIsRUFBekIsVUFBMEIsTUFBcUI7Ozs7NEJBQzdDLHFCQUFNLG9CQUFZLENBQUMscUJBQXFCLENBQ3RDLGNBQU0sT0FBQSxNQUFNLEVBQU4sQ0FBTSxFQUNaLGdDQUFnQyxFQUNoQyxJQUFJLENBQ0wsRUFBQTs7d0JBSkQsU0FJQyxDQUFDO3dCQUNGLGVBQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQzs7Ozs7S0FDeEM7SUFFRDs7T0FFRztJQUNHLG1CQUFtQixFQUF6QixVQUEwQixRQUF1Qjs7Ozs0QkFDL0MscUJBQU0sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFBQTs7d0JBQW5ELFNBQW1ELENBQUM7d0JBQ3BELHFCQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQXRCLFNBQXNCLENBQUM7Ozs7O0tBQ3hCO0lBRUQ7OztPQUdHO0lBQ0csa0JBQWtCLEVBQXhCLFVBQXlCLFlBQW9COzs7Ozs0QkFDM0MscUJBQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFBOzt3QkFBL0MsU0FBK0MsQ0FBQzt3QkFDaEQsS0FBQSxNQUFNLENBQUE7d0JBQUMscUJBQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFBOzt3QkFBMUMsa0JBQU8sU0FBbUMsRUFBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzs7Ozs7S0FDaEU7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLG9DQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNGLENBQUMifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/login/login.helper.js b/connect-automation/temp/page-objects/login/login.helper.js new file mode 100644 index 000000000..7296ec36d --- /dev/null +++ b/connect-automation/temp/page-objects/login/login.helper.js @@ -0,0 +1,114 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LoginPageHelper = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var common_helper_1 = require("../common-page/common.helper"); +var login_po_1 = require("./login.po"); +var LoginPageHelper = /** @class */ (function () { + function LoginPageHelper() { + } + /** + * Set the page object + * @param loginPage login Page + */ + LoginPageHelper.setLoginPage = function (loginPage) { + this.loginPageObject = loginPage; + }; + /** + * Open page + */ + LoginPageHelper.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.loginPageObject = new login_po_1.LoginPage(); + return [4 /*yield*/, this.loginPageObject.open()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Login + * @param {String} username + * @param {String} password + */ + LoginPageHelper.login = function (username, password) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.loginPageObject.waitForLoginForm()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.loginPageObject.fillLoginForm(username, password)]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Logout + */ + LoginPageHelper.logout = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.loginPageObject.logout()]; + case 1: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + return LoginPageHelper; +}()); +exports.LoginPageHelper = LoginPageHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFnZS1vYmplY3RzL2xvZ2luL2xvZ2luLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBcUQ7QUFDckQsOERBQTREO0FBQzVELHVDQUF1QztBQUV2QztJQUFBO0lBcUNBLENBQUM7SUFwQ0M7OztPQUdHO0lBQ1csNEJBQVksR0FBMUIsVUFBMkIsU0FBb0I7UUFDN0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ2lCLG9CQUFJLEdBQXhCOzs7Ozt3QkFDRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksb0JBQVMsRUFBRSxDQUFDO3dCQUN2QyxxQkFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFBOzt3QkFBakMsU0FBaUMsQ0FBQzs7Ozs7S0FDbkM7SUFFRDs7OztPQUlHO0lBQ2lCLHFCQUFLLEdBQXpCLFVBQTBCLFFBQWdCLEVBQUUsUUFBZ0I7Ozs7NEJBQzFELHFCQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsRUFBQTs7d0JBQTdDLFNBQTZDLENBQUM7d0JBQzlDLHFCQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBQTs7d0JBQTVELFNBQTRELENBQUM7d0JBQzdELHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7Ozs7O0tBQzNDO0lBRUQ7O09BRUc7SUFDaUIsc0JBQU0sR0FBMUI7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBQTs7d0JBQW5DLFNBQW1DLENBQUM7d0JBQ3BDLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFHSCxzQkFBQztBQUFELENBQUMsQUFyQ0QsSUFxQ0M7QUFyQ1ksMENBQWUifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/login/login.po.js b/connect-automation/temp/page-objects/login/login.po.js new file mode 100644 index 000000000..627bb29e1 --- /dev/null +++ b/connect-automation/temp/page-objects/login/login.po.js @@ -0,0 +1,176 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LoginPage = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var appconfig = require("../../config/app-config.json"); +var logger_1 = require("../../logger/logger"); +var config_helper_1 = require("../../utils/config-helper"); +var common_helper_1 = require("../common-page/common.helper"); +var LoginPage = /** @class */ (function () { + function LoginPage() { + } + /** + * Get login page + */ + LoginPage.prototype.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getRedirectLoginUrl())]; + case 1: + _a.sent(); + logger_1.logger.info('User navigated to Topcoder Login Page'); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Logout the user + */ + LoginPage.prototype.logout = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getLogoutUrl())]; + case 1: + _a.sent(); + logger_1.logger.info('user logged out'); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(LoginPage.prototype, "userNameField", { + /** + * Get Username field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('username'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LoginPage.prototype, "passwordField", { + /** + * Get Password field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('password'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LoginPage.prototype, "loginButton", { + /** + * Get Login button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByCss("button[type = 'submit']"); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LoginPage.prototype, "loginForm", { + /** + * Get login form + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('auth0-lock-widget'); + }, + enumerable: false, + configurable: true + }); + /** + * Wait for the login form to be displayed + */ + LoginPage.prototype.waitForLoginForm = function () { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // Wait until login form appears + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(8000)]; + case 1: + // Wait until login form appears + _a.sent(); + common_helper_1.CommonHelper.waitUntilVisibilityOf(function () { return _this.loginForm; }, 'Wait for login form', true); + logger_1.logger.info('Login Form Displayed'); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Fill and submit the login form + */ + LoginPage.prototype.fillLoginForm = function (username, password) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.waitUntilPresenceOf(function () { return _this.userNameField; }, 'wait for username field', false)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.userNameField.sendKeys(username)]; + case 2: + _a.sent(); + return [4 /*yield*/, this.passwordField.sendKeys(password)]; + case 3: + _a.sent(); + logger_1.logger.info('Login form filled with values: username - ' + + username + + ', password - FILTERED'); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilClickableOf(this.loginButton, appconfig.Timeout.ElementClickable, appconfig.LoggerErrors.ElementClickable)]; + case 4: + _a.sent(); + return [4 /*yield*/, this.loginButton.click()]; + case 5: + _a.sent(); + logger_1.logger.info('Submitted login form'); + return [2 /*return*/]; + } + }); + }); + }; + return LoginPage; +}()); +exports.LoginPage = LoginPage; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWdlLW9iamVjdHMvbG9naW4vbG9naW4ucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQW9FO0FBQ3BFLHdEQUEwRDtBQUMxRCw4Q0FBNkM7QUFDN0MsMkRBQXlEO0FBQ3pELDhEQUE0RDtBQUU1RDtJQUFBO0lBbUZBLENBQUM7SUFsRkM7O09BRUc7SUFDVSx3QkFBSSxHQUFqQjs7Ozs0QkFDRSxxQkFBTSxvQ0FBYSxDQUFDLElBQUksQ0FBQyw0QkFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBQTs7d0JBQTVELFNBQTRELENBQUM7d0JBQzdELGVBQU0sQ0FBQyxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQzs7Ozs7S0FDdEQ7SUFFRDs7T0FFRztJQUNVLDBCQUFNLEdBQW5COzs7OzRCQUNFLHFCQUFNLG9DQUFhLENBQUMsSUFBSSxDQUFDLDRCQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBQTs7d0JBQXJELFNBQXFELENBQUM7d0JBQ3RELGVBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzs7Ozs7S0FDaEM7SUFLRCxzQkFBVyxvQ0FBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsb0NBQWE7UUFIeEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLGtDQUFXO1FBSHRCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDbEUsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxnQ0FBUztRQUhwQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEUsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLG9DQUFnQixHQUE3Qjs7Ozs7O29CQUNFLGdDQUFnQztvQkFDaEMscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUQvQixnQ0FBZ0M7d0JBQ2hDLFNBQStCLENBQUM7d0JBQ2hDLDRCQUFZLENBQUMscUJBQXFCLENBQ2hDLGNBQU0sT0FBQSxLQUFJLENBQUMsU0FBUyxFQUFkLENBQWMsRUFDcEIscUJBQXFCLEVBQ3JCLElBQUksQ0FDTCxDQUFDO3dCQUNGLGVBQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7Ozs7S0FDckM7SUFFRDs7T0FFRztJQUNVLGlDQUFhLEdBQTFCLFVBQTJCLFFBQVEsRUFBRSxRQUFROzs7Ozs0QkFDM0MscUJBQU0sNEJBQVksQ0FBQyxtQkFBbUIsQ0FDcEMsY0FBTSxPQUFBLEtBQUksQ0FBQyxhQUFhLEVBQWxCLENBQWtCLEVBQ3hCLHlCQUF5QixFQUN6QixLQUFLLENBQ04sRUFBQTs7d0JBSkQsU0FJQyxDQUFDO3dCQUNGLHFCQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFBOzt3QkFBM0MsU0FBMkMsQ0FBQzt3QkFDNUMscUJBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUE7O3dCQUEzQyxTQUEyQyxDQUFDO3dCQUM1QyxlQUFNLENBQUMsSUFBSSxDQUNULDRDQUE0Qzs0QkFDMUMsUUFBUTs0QkFDUix1QkFBdUIsQ0FDMUIsQ0FBQzt3QkFDRixxQkFBTSxvQ0FBYSxDQUFDLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsV0FBVyxFQUNoQixTQUFTLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUNsQyxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUN4QyxFQUFBOzt3QkFKRCxTQUlDLENBQUM7d0JBQ0YscUJBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQTlCLFNBQThCLENBQUM7d0JBQy9CLGVBQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7Ozs7S0FDckM7SUFDSCxnQkFBQztBQUFELENBQUMsQUFuRkQsSUFtRkM7QUFuRlksOEJBQVMifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js new file mode 100644 index 000000000..3a3285acd --- /dev/null +++ b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js @@ -0,0 +1,220 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateNewPhaseHelper = void 0; +var moment = require("moment"); +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var logger_1 = require("../../../logger/logger"); +var common_helper_1 = require("../../common-page/common.helper"); +var create_new_phase_po_1 = require("./create-new-phase.po"); +var CreateNewPhaseHelper = /** @class */ (function () { + function CreateNewPhaseHelper() { + } + /** + * Initialize Create New Phase page object + */ + CreateNewPhaseHelper.initialize = function () { + this.createNewPhasePageObject = new create_new_phase_po_1.CreateNewPhasePageObject(); + }; + /** + * Verify whether user can create a phase and publish it. + * @param formData phase creation form data defined in test data + */ + CreateNewPhaseHelper.verifyCreateNewPhase = function (formData) { + return __awaiter(this, void 0, void 0, function () { + var alertElement, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, this.clickOnAddNewPhaseButton()]; + case 1: + _b.sent(); + return [4 /*yield*/, this.fillCreatePhaseForm(formData.title, formData.daysBetweenStartAndEndDate)]; + case 2: + _b.sent(); + // Fill report form + return [4 /*yield*/, this.fillMilestoneForm(0, formData.reportName)]; + case 3: + // Fill report form + _b.sent(); + return [4 /*yield*/, this.createNewPhasePageObject.addMilestoneButton.click()]; + case 4: + _b.sent(); + // Fill deliverable review form + return [4 /*yield*/, this.fillMilestoneForm(1, formData.deliverableReviewName, 'Deliverable Review')]; + case 5: + // Fill deliverable review form + _b.sent(); + return [4 /*yield*/, this.createNewPhasePageObject.addMilestoneButton.click()]; + case 6: + _b.sent(); + // Fill final deliverable review form + return [4 /*yield*/, this.fillMilestoneForm(2, formData.finalDeliverableReviewName, 'Final Deliverable Review')]; + case 7: + // Fill final deliverable review form + _b.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(3000)]; + case 8: + _b.sent(); + return [4 /*yield*/, this.createNewPhasePageObject.publishButton.click()]; + case 9: + _b.sent(); + alertElement = common_helper_1.CommonHelper.alertBox(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; + case 10: + _b.sent(); + _a = expect; + return [4 /*yield*/, common_helper_1.CommonHelper.successAlert().getText()]; + case 11: + _a.apply(void 0, [_b.sent()]).toBe("PROJECT PHASE CREATED."); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Click Add New Phase button, verify phase creation screen appearance + */ + CreateNewPhaseHelper.clickOnAddNewPhaseButton = function () { + return __awaiter(this, void 0, void 0, function () { + var newPhaseFormElement; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilClickableOf(this.createNewPhasePageObject.addNewPhaseButton)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.createNewPhasePageObject.addNewPhaseButton.click()]; + case 2: + _a.sent(); + newPhaseFormElement = this.createNewPhasePageObject.phaseCreationForm; + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilPresenceOf(newPhaseFormElement)]; + case 3: + _a.sent(); + expect(newPhaseFormElement).toBeDefined(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Put the phase name, start date and end date to phase creation form + * @param title form phase name + * @param daysBetweenStartAndEndDate number of days between start and end date. default to 3 days. + */ + CreateNewPhaseHelper.fillCreatePhaseForm = function (title, daysBetweenStartAndEndDate) { + if (daysBetweenStartAndEndDate === void 0) { daysBetweenStartAndEndDate = 3; } + return __awaiter(this, void 0, void 0, function () { + var titleWithDate, startDate, endDate; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + titleWithDate = common_helper_1.CommonHelper.appendDate(title); + return [4 /*yield*/, this.createNewPhasePageObject.titleInput.sendKeys(titleWithDate)]; + case 1: + _a.sent(); + logger_1.logger.info("Filled title field with: " + titleWithDate); + startDate = moment().format(common_helper_1.CommonHelper.dateFormat()); + return [4 /*yield*/, this.createNewPhasePageObject.startDateInput().sendKeys(startDate)]; + case 2: + _a.sent(); + logger_1.logger.info("Filled start date field with: " + startDate.slice(2)); + endDate = moment().add(daysBetweenStartAndEndDate, 'days').format(common_helper_1.CommonHelper.dateFormat()); + return [4 /*yield*/, this.createNewPhasePageObject.endDateInput().sendKeys(endDate)]; + case 3: + _a.sent(); + logger_1.logger.info("Filled end date field with: " + endDate.slice(2)); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Create and Fill milestone form + * @param appendix numeric indicator of added milestone form + * @param name name field + * @param type type field + */ + CreateNewPhaseHelper.fillMilestoneForm = function (appendix, name, type) { + return __awaiter(this, void 0, void 0, function () { + var types, nameInput, startDate, endDate; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(3000)]; + case 1: + _a.sent(); + if (!type) return [3 /*break*/, 6]; + return [4 /*yield*/, this.createNewPhasePageObject.allTypeInput()]; + case 2: + types = _a.sent(); + return [4 /*yield*/, types[appendix].click()]; + case 3: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(500)]; + case 4: + _a.sent(); + return [4 /*yield*/, this.createNewPhasePageObject.getOptionFromTypeDropdown(type).click()]; + case 5: + _a.sent(); + _a.label = 6; + case 6: + nameInput = this.createNewPhasePageObject.nameInput(appendix.toString()); + return [4 /*yield*/, nameInput.clear()]; + case 7: + _a.sent(); + return [4 /*yield*/, nameInput.sendKeys(name)]; + case 8: + _a.sent(); + logger_1.logger.info("Filled name field with: " + name); + startDate = moment().format(common_helper_1.CommonHelper.dateFormat()); + return [4 /*yield*/, this.createNewPhasePageObject.startDateInput(appendix.toString()).sendKeys(startDate)]; + case 9: + _a.sent(); + logger_1.logger.info("Filled start date field with: " + startDate.slice(2)); + endDate = moment().add(1, 'days').format(common_helper_1.CommonHelper.dateFormat()); + return [4 /*yield*/, this.createNewPhasePageObject.endDateInput(appendix.toString()).sendKeys(endDate)]; + case 10: + _a.sent(); + logger_1.logger.info("Filled end date field with: " + endDate.slice(2)); + return [2 /*return*/]; + } + }); + }); + }; + return CreateNewPhaseHelper; +}()); +exports.CreateNewPhaseHelper = CreateNewPhaseHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcGhhc2UtY3JlYXRpb24tZmxvdy9jcmVhdGUtbmV3LXBoYXNlL2NyZWF0ZS1uZXctcGhhc2UuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFpQztBQUVqQyw2REFBcUQ7QUFDckQsaURBQWdEO0FBQ2hELGlFQUErRDtBQUUvRCw2REFBaUU7QUFFakU7SUFBQTtJQW9HQSxDQUFDO0lBbkdDOztPQUVHO0lBQ1csK0JBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSw4Q0FBd0IsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDaUIseUNBQW9CLEdBQXhDLFVBQXlDLFFBQTRCOzs7Ozs0QkFDbkUscUJBQU0sSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUE7O3dCQUFyQyxTQUFxQyxDQUFDO3dCQUN0QyxxQkFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsMEJBQTBCLENBQUMsRUFBQTs7d0JBQW5GLFNBQW1GLENBQUM7d0JBQ3BGLG1CQUFtQjt3QkFDbkIscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUE7O3dCQURwRCxtQkFBbUI7d0JBQ25CLFNBQW9ELENBQUM7d0JBQ3JELHFCQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQTlELFNBQThELENBQUM7d0JBQy9ELCtCQUErQjt3QkFDL0IscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMscUJBQXFCLEVBQUUsb0JBQW9CLENB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js new file mode 100644 index 000000000..92a503c04 --- /dev/null +++ b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9waGFzZS1jcmVhdGlvbi1mbG93L2NyZWF0ZS1uZXctcGhhc2UvY3JlYXRlLW5ldy1waGFzZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js new file mode 100644 index 000000000..f341a495e --- /dev/null +++ b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js @@ -0,0 +1,137 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateNewPhasePageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var CreateNewPhasePageObject = /** @class */ (function () { + function CreateNewPhasePageObject() { + } + Object.defineProperty(CreateNewPhasePageObject.prototype, "addNewPhaseButton", { + /** + * Get Add New Phase Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Add New Phase'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateNewPhasePageObject.prototype, "phaseCreationForm", { + /** + * Get Project Creation Form + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_1jLI3q'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateNewPhasePageObject.prototype, "titleInput", { + /** + * Get title input + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('title'); + }, + enumerable: false, + configurable: true + }); + /** + * Get name input + * @param appendix numeric indicator of added milestone form + */ + CreateNewPhasePageObject.prototype.nameInput = function (appendix) { + return topcoder_testing_lib_1.ElementHelper.getElementByName("name_" + appendix); + }; + /** + * Get start date input + * @param appendix numeric indicator of added milestone form + */ + CreateNewPhasePageObject.prototype.startDateInput = function (appendix) { + var inputName = appendix ? "startDate_" + appendix : 'startDate'; + return topcoder_testing_lib_1.ElementHelper.getElementByName(inputName); + }; + /** + * Get end date input + * @param appendix numeric indicator of added milestone form + */ + CreateNewPhasePageObject.prototype.endDateInput = function (appendix) { + var inputName = appendix ? "endDate_" + appendix : 'endDate'; + return topcoder_testing_lib_1.ElementHelper.getElementByName(inputName); + }; + /** + * Get Type Input + */ + CreateNewPhasePageObject.prototype.allTypeInput = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('react-select-container')]; + }); + }); + }; + /** + * Select option from type field dropdown + * @param option desired option + */ + CreateNewPhasePageObject.prototype.getOptionFromTypeDropdown = function (option) { + return topcoder_testing_lib_1.ElementHelper.getElementByCssContainingText('.react-select__option', option); + }; + Object.defineProperty(CreateNewPhasePageObject.prototype, "addMilestoneButton", { + /** + * Get Add Milestone Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Add Milestone'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateNewPhasePageObject.prototype, "publishButton", { + /** + * Get Publish Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Publish'); + }, + enumerable: false, + configurable: true + }); + return CreateNewPhasePageObject; +}()); +exports.CreateNewPhasePageObject = CreateNewPhasePageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5wby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9waGFzZS1jcmVhdGlvbi1mbG93L2NyZWF0ZS1uZXctcGhhc2UvY3JlYXRlLW5ldy1waGFzZS5wby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBcUQ7QUFDckQ7SUFBQTtJQTRFQSxDQUFDO0lBeEVDLHNCQUFXLHVEQUFpQjtRQUg1Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsdURBQWlCO1FBSDVCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxnREFBVTtRQUhyQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7OztPQUFBO0lBRUQ7OztPQUdHO0lBQ0ksNENBQVMsR0FBaEIsVUFBaUIsUUFBaUI7UUFDaEMsT0FBTyxvQ0FBYSxDQUFDLGdCQUFnQixDQUFDLFVBQVEsUUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGlEQUFjLEdBQXJCLFVBQXNCLFFBQWlCO1FBQ3JDLElBQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBYSxRQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNuRSxPQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLCtDQUFZLEdBQW5CLFVBQW9CLFFBQWlCO1FBQ25DLElBQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBVyxRQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvRCxPQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ1UsK0NBQVksR0FBekI7OztnQkFDRSxzQkFBTyxvQ0FBYSxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixDQUFDLEVBQUM7OztLQUMxRTtJQUVEOzs7T0FHRztJQUNJLDREQUF5QixHQUFoQyxVQUFpQyxNQUFjO1FBQzdDLE9BQU8sb0NBQWEsQ0FBQyw2QkFBNkIsQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBS0Qsc0JBQVcsd0RBQWtCO1FBSDdCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0QsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxtREFBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7OztPQUFBO0lBQ0gsK0JBQUM7QUFBRCxDQUFDLEFBNUVELElBNEVDO0FBNUVZLDREQUF3QiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/footer/footer.helper.js b/connect-automation/temp/page-objects/profile-update/footer/footer.helper.js new file mode 100644 index 000000000..8c0f0bd2d --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/footer/footer.helper.js @@ -0,0 +1,73 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FooterHelper = void 0; +var footer_po_1 = require("./footer.po"); +var FooterHelper = /** @class */ (function () { + function FooterHelper() { + } + /** + * Initialize Footer Page Object + */ + FooterHelper.initialize = function () { + this.footerPageObject = new footer_po_1.FooterPageObject(); + }; + /** + * Verify whether copyright year is displayed correctly. + */ + FooterHelper.verifyCopyright = function () { + return __awaiter(this, void 0, void 0, function () { + var footerText, footerTextArray, displayedYear, expectedYear; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.footerPageObject.footerText.getText()]; + case 1: + footerText = _a.sent(); + footerTextArray = footerText.split(' '); + displayedYear = footerTextArray.length > 2 ? footerTextArray[2] : ''; + expectedYear = new Date().getFullYear().toString(); + expect(expectedYear).toEqual(displayedYear); + return [2 /*return*/]; + } + }); + }); + }; + return FooterHelper; +}()); +exports.FooterHelper = FooterHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9mb290ZXIvZm9vdGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBK0M7QUFFL0M7SUFBQTtJQXNCQSxDQUFDO0lBckJDOztPQUVHO0lBQ1csdUJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSw0QkFBZ0IsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNpQiw0QkFBZSxHQUFuQzs7Ozs7NEJBQ3FCLHFCQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dCQUE3RCxVQUFVLEdBQUcsU0FBZ0Q7d0JBQzdELGVBQWUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUV4QyxhQUFhLEdBQUcsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNyRSxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFFekQsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzs7Ozs7S0FDN0M7SUFHSCxtQkFBQztBQUFELENBQUMsQUF0QkQsSUFzQkM7QUF0Qlksb0NBQVkifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/footer/footer.po.js b/connect-automation/temp/page-objects/profile-update/footer/footer.po.js new file mode 100644 index 000000000..450fdd0e9 --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/footer/footer.po.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FooterPageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var FooterPageObject = /** @class */ (function () { + function FooterPageObject() { + } + Object.defineProperty(FooterPageObject.prototype, "footerText", { + /** + * Get Footer Copyright Text + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('copyright-notice'); + }, + enumerable: false, + configurable: true + }); + return FooterPageObject; +}()); +exports.FooterPageObject = FooterPageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLnBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2ZpbGUtdXBkYXRlL2Zvb3Rlci9mb290ZXIucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXFEO0FBRXJEO0lBQUE7SUFPQSxDQUFDO0lBSEMsc0JBQVcsd0NBQVU7UUFIckI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQztBQVBZLDRDQUFnQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js b/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js new file mode 100644 index 000000000..4d791b2e8 --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js @@ -0,0 +1,177 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LeftMenuPageHelper = void 0; +var logger_1 = require("../../../logger/logger"); +var config_helper_1 = require("../../../utils/config-helper"); +var common_helper_1 = require("../../common-page/common.helper"); +var left_menu_po_1 = require("./left-menu.po"); +var LeftMenuPageHelper = /** @class */ (function () { + function LeftMenuPageHelper() { + } + /** + * Initialize Left Menu Page Object + */ + LeftMenuPageHelper.initialize = function () { + this.leftMenuPageObject = new left_menu_po_1.LeftMenuPageObject(); + }; + /** + * Verify Profile Information Link redirected correctly + */ + LeftMenuPageHelper.verifyProfileInformation = function () { + return __awaiter(this, void 0, void 0, function () { + var profileInfo; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.leftMenuPageObject.profileInformationLink()]; + case 1: + profileInfo = _a.sent(); + return [4 /*yield*/, profileInfo.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 3: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getMyProfileUrl())]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify Notification Settings Link redirected correctly + */ + LeftMenuPageHelper.verifyNotificationSettings = function () { + return __awaiter(this, void 0, void 0, function () { + var notificationSettings; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.leftMenuPageObject.notificationSettingsLink()]; + case 1: + notificationSettings = _a.sent(); + return [4 /*yield*/, notificationSettings.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 3: + _a.sent(); + logger_1.logger.info('User navigated to Notification Settings Page'); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getNotificationSettingsUrl())]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify Account & Security Link redirected correctly + */ + LeftMenuPageHelper.verifyAccountAndSecurity = function () { + return __awaiter(this, void 0, void 0, function () { + var accountAndSecurity; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.leftMenuPageObject.accountAndSecurityLink()]; + case 1: + accountAndSecurity = _a.sent(); + return [4 /*yield*/, accountAndSecurity.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 3: + _a.sent(); + logger_1.logger.info('User navigated to Account & Security Page'); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getAccountAndSecurityUrl())]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify All Projects redirected correctly + */ + LeftMenuPageHelper.verifyAllProjects = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.leftMenuPageObject.allProjectsLink.click()]; + case 1: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 2: + _a.sent(); + logger_1.logger.info('User navigated to All Projects Page'); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getAllProjectsUrl())]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify Notification Link redirected to correctly + */ + LeftMenuPageHelper.verifyNotifications = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.leftMenuPageObject.notificationsLink.click()]; + case 1: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 2: + _a.sent(); + logger_1.logger.info('User navigated to Notifications Page'); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getNotificationUrl())]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + return LeftMenuPageHelper; +}()); +exports.LeftMenuPageHelper = LeftMenuPageHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1tZW51LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9sZWZ0LW1lbnUvbGVmdC1tZW51LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBQzVELGlFQUErRDtBQUMvRCwrQ0FBb0Q7QUFFcEQ7SUFBQTtJQWtFQSxDQUFDO0lBakVDOztPQUVHO0lBQ1csNkJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxpQ0FBa0IsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNpQiwyQ0FBd0IsR0FBNUM7Ozs7OzRCQUNzQixxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsRUFBQTs7d0JBQXBFLFdBQVcsR0FBRyxTQUFzRDt3QkFDMUUscUJBQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBekIsU0FBeUIsQ0FBQzt3QkFDMUIscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzt3QkFFMUMscUJBQU0sNEJBQVksQ0FBQyxhQUFhLENBQUMsNEJBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFBOzt3QkFBaEUsU0FBZ0UsQ0FBQzs7Ozs7S0FDbEU7SUFFRDs7T0FFRztJQUNpQiw2Q0FBMEIsR0FBOUM7Ozs7OzRCQUMrQixxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLEVBQUUsRUFBQTs7d0JBQS9FLG9CQUFvQixHQUFHLFNBQXdEO3dCQUNyRixxQkFBTSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQWxDLFNBQWtDLENBQUM7d0JBQ25DLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7d0JBQzFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQzt3QkFFNUQscUJBQU0sNEJBQVksQ0FBQyxhQUFhLENBQUMsNEJBQVksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLEVBQUE7O3dCQUEzRSxTQUEyRSxDQUFDOzs7OztLQUM3RTtJQUVEOztPQUVHO0lBQ2lCLDJDQUF3QixHQUE1Qzs7Ozs7NEJBQzZCLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxFQUFBOzt3QkFBM0Usa0JBQWtCLEdBQUcsU0FBc0Q7d0JBQ2pGLHFCQUFNLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBaEMsU0FBZ0MsQ0FBQzt3QkFDakMscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzt3QkFDMUMsZUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO3dCQUV6RCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUMsRUFBQTs7d0JBQXpFLFNBQXlFLENBQUM7Ozs7O0tBQzNFO0lBRUQ7O09BRUc7SUFDaUIsb0NBQWlCLEdBQXJDOzs7OzRCQUNFLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUFyRCxTQUFxRCxDQUFDO3dCQUN0RCxxQkFBTSw0QkFBWSxDQUFDLG9CQUFvQixFQUFFLEVBQUE7O3dCQUF6QyxTQUF5QyxDQUFDO3dCQUMxQyxlQUFNLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7d0JBRW5ELHFCQUFNLDRCQUFZLENBQUMsYUFBYSxDQUFDLDRCQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFBOzt3QkFBbEUsU0FBa0UsQ0FBQzs7Ozs7S0FDcEU7SUFFRDs7T0FFRztJQUNpQixzQ0FBbUIsR0FBdkM7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBdkQsU0FBdUQsQ0FBQzt3QkFDeEQscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzt3QkFDMUMsZUFBTSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3dCQUVwRCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBQTs7d0JBQW5FLFNBQW1FLENBQUM7Ozs7O0tBQ3JFO0lBR0gseUJBQUM7QUFBRCxDQUFDLEFBbEVELElBa0VDO0FBbEVZLGdEQUFrQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js b/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js new file mode 100644 index 000000000..25a5e0dce --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js @@ -0,0 +1,135 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LeftMenuPageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var LeftMenuPageObject = /** @class */ (function () { + function LeftMenuPageObject() { + } + Object.defineProperty(LeftMenuPageObject.prototype, "myProfileLink", { + /** + * Get My Profile Link Element + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementContainingText('MY PROFILE'); + }, + enumerable: false, + configurable: true + }); + /** + * Get Sub Menus + */ + LeftMenuPageObject.prototype.getSubmenus = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('_1l5nE0 _3wRYsd')]; + }); + }); + }; + /** + * Get Profile Information Link + */ + LeftMenuPageObject.prototype.profileInformationLink = function () { + return __awaiter(this, void 0, void 0, function () { + var menus; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getSubmenus()]; + case 1: + menus = _a.sent(); + return [2 /*return*/, menus[0]]; + } + }); + }); + }; + /** + * Get Notification Settings Link + */ + LeftMenuPageObject.prototype.notificationSettingsLink = function () { + return __awaiter(this, void 0, void 0, function () { + var menus; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getSubmenus()]; + case 1: + menus = _a.sent(); + return [2 /*return*/, menus[1]]; + } + }); + }); + }; + /** + * Get Account & Security Link + */ + LeftMenuPageObject.prototype.accountAndSecurityLink = function () { + return __awaiter(this, void 0, void 0, function () { + var menus; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getSubmenus()]; + case 1: + menus = _a.sent(); + return [2 /*return*/, menus[2]]; + } + }); + }); + }; + Object.defineProperty(LeftMenuPageObject.prototype, "allProjectsLink", { + /** + * Get All Projects Link + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementContainingText('ALL PROJECTS'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LeftMenuPageObject.prototype, "notificationsLink", { + /** + * Get Notifications Link + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementContainingText('NOTIFICATIONS'); + }, + enumerable: false, + configurable: true + }); + return LeftMenuPageObject; +}()); +exports.LeftMenuPageObject = LeftMenuPageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1tZW51LnBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2ZpbGUtdXBkYXRlL2xlZnQtbWVudS9sZWZ0LW1lbnUucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQXFEO0FBRXJEO0lBQUE7SUFvREEsQ0FBQztJQWhEQyxzQkFBVyw2Q0FBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlELENBQUM7OztPQUFBO0lBRUQ7O09BRUc7SUFDVSx3Q0FBVyxHQUF4Qjs7O2dCQUNFLHNCQUFPLG9DQUFhLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBQzs7O0tBQ25FO0lBRUQ7O09BRUc7SUFDVSxtREFBc0IsR0FBbkM7Ozs7OzRCQUNnQixxQkFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUE7O3dCQUFoQyxLQUFLLEdBQUcsU0FBd0I7d0JBQ3RDLHNCQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQzs7OztLQUNqQjtJQUVEOztPQUVHO0lBQ1UscURBQXdCLEdBQXJDOzs7Ozs0QkFDZ0IscUJBQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFBOzt3QkFBaEMsS0FBSyxHQUFHLFNBQXdCO3dCQUN0QyxzQkFBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUM7Ozs7S0FDakI7SUFFRDs7T0FFRztJQUNVLG1EQUFzQixHQUFuQzs7Ozs7NEJBQ2dCLHFCQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQTs7d0JBQWhDLEtBQUssR0FBRyxTQUF3Qjt3QkFDdEMsc0JBQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDOzs7O0tBQ2pCO0lBS0Qsc0JBQVcsK0NBQWU7UUFIMUI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLGlEQUFpQjtRQUg1Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBcERELElBb0RDO0FBcERZLGdEQUFrQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js new file mode 100644 index 000000000..ec5db7bd6 --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js @@ -0,0 +1,449 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MyProfilePageHelper = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var logger_1 = require("../../../logger/logger"); +var common_helper_1 = require("../../common-page/common.helper"); +var config_helper_1 = require("../../../utils/config-helper"); +var my_profile_po_1 = require("./my-profile.po"); +var MyProfilePageHelper = /** @class */ (function () { + function MyProfilePageHelper() { + } + /** + * Initialize My Profile page object + */ + MyProfilePageHelper.initialize = function () { + this.myProfilePageObject = new my_profile_po_1.MyProfilePageObject(); + }; + /** + * Opens the My Profile page + */ + MyProfilePageHelper.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, my_profile_po_1.MyProfilePageObject.open()]; + case 1: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 2: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update First Name Field + * @param firstName first name + */ + MyProfilePageHelper.updateFirstName = function (firstName) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.firstNameField, firstName)]; + case 1: + _a.sent(); + logger_1.logger.info("Updated Last Name Field: " + firstName); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update Last Name Field + * @param lastName last name + */ + MyProfilePageHelper.updateLastName = function (lastName) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.lastNameField, lastName)]; + case 1: + _a.sent(); + logger_1.logger.info("Updated Last Name Field: " + lastName); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update Title Field + * @param title title + */ + MyProfilePageHelper.updateTitle = function (title) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.titleField, title)]; + case 1: + _a.sent(); + logger_1.logger.info("Updated Title Field: " + title); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update Company Url Field + * @param companyUrl company url + */ + MyProfilePageHelper.updateCompanyUrl = function (companyUrl) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.companyUrlField, companyUrl)]; + case 1: + _a.sent(); + logger_1.logger.info("Updated Company Url Field: " + companyUrl); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update Local Time Zone Field + * @param localTimezone local timezone + */ + MyProfilePageHelper.updateLocalTimezone = function (localTimezone) { + return __awaiter(this, void 0, void 0, function () { + var el, selectOption; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.myProfilePageObject.localTimezoneField()]; + case 1: + el = _a.sent(); + return [4 /*yield*/, el.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(localTimezone)]; + case 3: + selectOption = _a.sent(); + logger_1.logger.info("Updated Local Time Field: " + localTimezone); + return [4 /*yield*/, selectOption.click()]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update Start Time Field + * @param startTime start time + */ + MyProfilePageHelper.updateStartTime = function (startTime) { + return __awaiter(this, void 0, void 0, function () { + var el, selectOption; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.myProfilePageObject.startTimeField()]; + case 1: + el = _a.sent(); + return [4 /*yield*/, el.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(startTime)]; + case 3: + selectOption = _a.sent(); + logger_1.logger.info("Updated Start Time Field: " + startTime); + return [4 /*yield*/, selectOption.click()]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update End Time Field + * @param endTime end time + */ + MyProfilePageHelper.updateEndTime = function (endTime) { + return __awaiter(this, void 0, void 0, function () { + var el, selectOption; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.myProfilePageObject.endTimeField()]; + case 1: + el = _a.sent(); + return [4 /*yield*/, el.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(endTime)]; + case 3: + selectOption = _a.sent(); + logger_1.logger.info("Updated End Time Field: " + endTime); + return [4 /*yield*/, selectOption.click()]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Update Country Field + * @param country country name + */ + MyProfilePageHelper.updateCountryDropdown = function (country) { + return __awaiter(this, void 0, void 0, function () { + var el, selectOption; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.myProfilePageObject.countryField()]; + case 1: + el = _a.sent(); + return [4 /*yield*/, el.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(200)]; + case 3: + _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(country)]; + case 4: + selectOption = _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(200)]; + case 5: + _a.sent(); + logger_1.logger.info("Updated Country Field: " + country); + return [4 /*yield*/, selectOption.click()]; + case 6: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Fill Profile Information on User Settings Page. + */ + MyProfilePageHelper.updateProfileInformation = function (userProfile) { + return __awaiter(this, void 0, void 0, function () { + var alertElement; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.updateFirstName(userProfile.firstName)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.updateLastName(userProfile.lastName)]; + case 2: + _a.sent(); + return [4 /*yield*/, this.updateTitle(userProfile.title)]; + case 3: + _a.sent(); + return [4 /*yield*/, this.updateCompanyUrl(userProfile.companyUrl)]; + case 4: + _a.sent(); + return [4 /*yield*/, this.updateLocalTimezone(userProfile.localTimezone)]; + case 5: + _a.sent(); + return [4 /*yield*/, this.updateStartTime(userProfile.startTime)]; + case 6: + _a.sent(); + return [4 /*yield*/, this.updateEndTime(userProfile.endTime)]; + case 7: + _a.sent(); + // Click on Save Settings button. + return [4 /*yield*/, this.myProfilePageObject.submitButton.click()]; + case 8: + // Click on Save Settings button. + _a.sent(); + alertElement = this.myProfilePageObject.successAlert; + return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; + case 9: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Select Country From Business Phone Field. + * @param businessPhoneCountry business phone country + */ + MyProfilePageHelper.changeBusinessPhoneCountry = function (businessPhoneCountry) { + return __awaiter(this, void 0, void 0, function () { + var countryField, dropDownParent, selectOptions; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + countryField = this.myProfilePageObject.businessPhoneCountryField; + return [4 /*yield*/, countryField.click()]; + case 1: + _a.sent(); + dropDownParent = this.myProfilePageObject.businessPhoneDropdown; + return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByLinkText(businessPhoneCountry, dropDownParent)]; + case 2: + selectOptions = _a.sent(); + return [4 /*yield*/, selectOptions[0].click()]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verifies whether the current user can update the basic information. + * @param userProfile Test data for User Profile + */ + MyProfilePageHelper.verifyProfileInformation = function (userProfile) { + return __awaiter(this, void 0, void 0, function () { + var firstName, lastName, title, companyUrl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // My Profile page update button becomes active only when data is changed. + // To be able to edit in every test case we are adding timestamp to firstname field. + userProfile = __assign(__assign({}, userProfile), { firstName: common_helper_1.CommonHelper.appendDate(userProfile.firstName) }); + return [4 /*yield*/, this.updateProfileInformation(userProfile)]; + case 1: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; + case 2: + _a.sent(); + // Go To User Profile Page Again + return [4 /*yield*/, this.open()]; + case 3: + // Go To User Profile Page Again + _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.getFirstNameValue()]; + case 4: + firstName = _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.getLastNameValue()]; + case 5: + lastName = _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.getTitleValue()]; + case 6: + title = _a.sent(); + return [4 /*yield*/, this.myProfilePageObject.getCompanyUrlValue()]; + case 7: + companyUrl = _a.sent(); + expect(firstName).toEqual(userProfile.firstName); + expect(lastName).toEqual(userProfile.lastName); + expect(title).toEqual(userProfile.title); + expect(companyUrl).toEqual(userProfile.companyUrl); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verifies whether the business phone/country sync accordingly. + * @param userProfile Test data for User Profile + */ + MyProfilePageHelper.verifyBusinessPhoneSync = function (userProfile) { + return __awaiter(this, void 0, void 0, function () { + var country, countryCode, businessPhoneCountry, businessPhoneCountryCode, countryAbbr, businessNumber, currentCountryCode, _a, countryAbbreviation; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + country = userProfile.country, countryCode = userProfile.countryCode, businessPhoneCountry = userProfile.businessPhoneCountry, businessPhoneCountryCode = userProfile.businessPhoneCountryCode, countryAbbr = userProfile.countryAbbr; + return [4 /*yield*/, this.changeBusinessPhoneCountry(businessPhoneCountry)]; + case 1: + _b.sent(); + return [4 /*yield*/, this.myProfilePageObject.getBusinessPhoneValue()]; + case 2: + businessNumber = _b.sent(); + currentCountryCode = businessNumber.substr(0, businessPhoneCountryCode.length); + expect(currentCountryCode).toEqual(businessPhoneCountryCode); + _a = expect; + return [4 /*yield*/, this.myProfilePageObject.countryField()]; + case 3: return [4 /*yield*/, (_b.sent()).getText()]; + case 4: + _a.apply(void 0, [_b.sent()]).toEqual(businessPhoneCountry); + return [4 /*yield*/, this.updateCountryDropdown(country)]; + case 5: + _b.sent(); + return [4 /*yield*/, this.myProfilePageObject.getBusinessPhoneValue()]; + case 6: + businessNumber = _b.sent(); + currentCountryCode = businessNumber.substr(0, countryCode.length); + return [4 /*yield*/, this.myProfilePageObject.countryAbbreviation()]; + case 7: + countryAbbreviation = _b.sent(); + expect(countryAbbreviation).toEqual(countryAbbr); + expect(currentCountryCode).toEqual(countryCode); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verifies whether the user can close the profile window. + */ + MyProfilePageHelper.verifyUserCloseProfileWindow = function () { + return __awaiter(this, void 0, void 0, function () { + var closeButton, currentUrl, expectedUrl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + closeButton = this.myProfilePageObject.closeButton; + return [4 /*yield*/, closeButton.click()]; + case 1: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; + case 2: + currentUrl = _a.sent(); + expectedUrl = config_helper_1.ConfigHelper.getAllProjectsUrl(); + expect(currentUrl).toContain(expectedUrl); + return [2 /*return*/]; + } + }); + }); + }; + return MyProfilePageHelper; +}()); +exports.MyProfilePageHelper = MyProfilePageHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvZmlsZS11cGRhdGUvbXktcHJvZmlsZS9teS1wcm9maWxlLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsaUVBQStEO0FBQy9ELDhEQUE0RDtBQUU1RCxpREFBc0Q7QUFFdEQ7SUFBQTtJQTJPQSxDQUFDO0lBMU9DOztPQUVHO0lBQ1csOEJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxtQ0FBbUIsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNpQix3QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxtQ0FBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQWhDLFNBQWdDLENBQUM7d0JBQ2pDLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7d0JBQzFDLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFFRDs7O09BR0c7SUFDaUIsbUNBQWUsR0FBbkMsVUFBb0MsU0FBaUI7Ozs7NEJBQ25ELHFCQUFNLDRCQUFZLENBQUMsY0FBYyxDQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUN2QyxTQUFTLENBQ1YsRUFBQTs7d0JBSEQsU0FHQyxDQUFDO3dCQUNGLGVBQU0sQ0FBQyxJQUFJLENBQUMsOEJBQTRCLFNBQVcsQ0FBQyxDQUFDOzs7OztLQUN0RDtJQUVEOzs7T0FHRztJQUNpQixrQ0FBYyxHQUFsQyxVQUFtQyxRQUFnQjs7Ozs0QkFDakQscUJBQU0sNEJBQVksQ0FBQyxjQUFjLENB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js new file mode 100644 index 000000000..adc5e5d85 --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9teS1wcm9maWxlL215LXByb2ZpbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js new file mode 100644 index 000000000..5de6e852b --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js @@ -0,0 +1,322 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MyProfilePageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var logger_1 = require("../../../logger/logger"); +var common_helper_1 = require("../../common-page/common.helper"); +var config_helper_1 = require("../../../utils/config-helper"); +var MyProfilePageObject = /** @class */ (function () { + function MyProfilePageObject() { + } + /** + * Open the My Profile page + */ + MyProfilePageObject.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getMyProfileUrl())]; + case 1: + _a.sent(); + logger_1.logger.info('User navigated to My Profile Page'); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(MyProfilePageObject.prototype, "firstNameField", { + /** + * Get First Name field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('firstName'); + }, + enumerable: false, + configurable: true + }); + /** + * Get First Name value + */ + MyProfilePageObject.prototype.getFirstNameValue = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('firstName').getAttribute('value')]; + }); + }); + }; + Object.defineProperty(MyProfilePageObject.prototype, "lastNameField", { + /** + * Get Last Name field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('lastName'); + }, + enumerable: false, + configurable: true + }); + /** + * Get Last Name field value + */ + MyProfilePageObject.prototype.getLastNameValue = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('lastName').getAttribute('value')]; + }); + }); + }; + Object.defineProperty(MyProfilePageObject.prototype, "titleField", { + /** + * Get Title field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('title'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(MyProfilePageObject.prototype, "businessPhoneField", { + /** + * Get Business Phone field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('businessPhone'); + }, + enumerable: false, + configurable: true + }); + /** + * Get Business Phone field + */ + MyProfilePageObject.prototype.getBusinessPhoneValue = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('businessPhone').getAttribute('value')]; + }); + }); + }; + /** + * Get Country Abbreviation from Business Phone dropdown + */ + MyProfilePageObject.prototype.countryAbbreviation = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByClassName('dropdown-menu-header').getText()]; + }); + }); + }; + /** + * Get title field value + */ + MyProfilePageObject.prototype.getTitleValue = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('title').getAttribute('value')]; + }); + }); + }; + Object.defineProperty(MyProfilePageObject.prototype, "companyUrlField", { + /** + * Get Company Url Field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('companyURL'); + }, + enumerable: false, + configurable: true + }); + /** + * Get Company Url value + */ + MyProfilePageObject.prototype.getCompanyUrlValue = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('companyURL').getAttribute('value')]; + }); + }); + }; + /** + * Get Local TimeZone Field + */ + MyProfilePageObject.prototype.localTimezoneField = function () { + return __awaiter(this, void 0, void 0, function () { + var xpath, parentEl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + xpath = "//span[text()='Local Timezone']/../following-sibling::div//div"; + return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; + case 1: + parentEl = _a.sent(); + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; + } + }); + }); + }; + /** + * Get Start Time Field + */ + MyProfilePageObject.prototype.startTimeField = function () { + return __awaiter(this, void 0, void 0, function () { + var xpath, parentEl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + xpath = "//label[text()='Start Time']/following-sibling::div"; + return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; + case 1: + parentEl = _a.sent(); + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; + } + }); + }); + }; + /** + * Get End Time Field + */ + MyProfilePageObject.prototype.endTimeField = function () { + return __awaiter(this, void 0, void 0, function () { + var xpath, parentEl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + xpath = "//label[text()='End Time']/following-sibling::div"; + return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; + case 1: + parentEl = _a.sent(); + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; + } + }); + }); + }; + /** + * Get Country Field + */ + MyProfilePageObject.prototype.countryField = function () { + return __awaiter(this, void 0, void 0, function () { + var xpath, parentEl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + xpath = "//span[text()='Country']/../following-sibling::div//div"; + return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; + case 1: + parentEl = _a.sent(); + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; + } + }); + }); + }; + Object.defineProperty(MyProfilePageObject.prototype, "submitButton", { + /** + * Get Submit Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Save settings'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(MyProfilePageObject.prototype, "successAlert", { + /** + * Get Success Alert Span + */ + get: function () { + return common_helper_1.CommonHelper.findElementByText('span', 'Settings successfully saved.'); + }, + enumerable: false, + configurable: true + }); + /** + * Find Selected Text From Dropdown Menu + * @param text string + * @param parent (optional) parent element + */ + MyProfilePageObject.prototype.selectTextFromDropDown = function (text, parent) { + return __awaiter(this, void 0, void 0, function () { + var results; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.findTextFromDropDown(text, parent)]; + case 1: + results = _a.sent(); + if (results.length > 2) { + return [2 /*return*/, results[2]]; + } + else { + return [2 /*return*/, results[0]]; + } + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(MyProfilePageObject.prototype, "closeButton", { + /** + * Get Close Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('close'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(MyProfilePageObject.prototype, "businessPhoneCountryField", { + /** + * Get Business Phone Country Field Element + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('dropdown-wrap undefined'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(MyProfilePageObject.prototype, "businessPhoneDropdown", { + /** + * Get Business Phone Dropdown Element + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('dropdown-menu-list'); + }, + enumerable: false, + configurable: true + }); + return MyProfilePageObject; +}()); +exports.MyProfilePageObject = MyProfilePageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5wby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9teS1wcm9maWxlL215LXByb2ZpbGUucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQW9FO0FBQ3BFLGlEQUFnRDtBQUVoRCxpRUFBK0Q7QUFDL0QsOERBQTREO0FBRTVEO0lBQUE7SUE0TEEsQ0FBQztJQTNMQzs7T0FFRztJQUNpQix3QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxvQ0FBYSxDQUFDLElBQUksQ0FBQyw0QkFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUE7O3dCQUF4RCxTQUF3RCxDQUFDO3dCQUN6RCxlQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Ozs7O0tBQ2xEO0lBS0Qsc0JBQVcsK0NBQWM7UUFIekI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDOzs7T0FBQTtJQUVEOztPQUVHO0lBQ1UsK0NBQWlCLEdBQTlCOzs7Z0JBQ0Usc0JBQU8sb0NBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUM7OztLQUMxRTtJQUtELHNCQUFXLDhDQUFhO1FBSHhCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLDhDQUFnQixHQUE3Qjs7O2dCQUNFLHNCQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFDOzs7S0FDekU7SUFLRCxzQkFBVywyQ0FBVTtRQUhyQjs7V0FFRzth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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js b/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js new file mode 100644 index 000000000..17eee3532 --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js @@ -0,0 +1,157 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UserProfileMenuHelper = void 0; +var config_helper_1 = require("../../../utils/config-helper"); +var common_helper_1 = require("../../common-page/common.helper"); +var user_profile_menu_po_1 = require("./user-profile-menu.po"); +var UserProfileMenuHelper = /** @class */ (function () { + function UserProfileMenuHelper() { + } + /** + * Initialize User Profile Page Object + */ + UserProfileMenuHelper.initialize = function () { + this.userProfilePageObject = new user_profile_menu_po_1.UserProfilePageObject(); + }; + /** + * Opens Profile Menu from right top corner section + */ + UserProfileMenuHelper.openMenuDropdown = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.navigateToAllProjectsPage()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.userProfilePageObject.menuDropdown.click()]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify My Profile Page redirects to correct url + */ + UserProfileMenuHelper.verifyMyProfile = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.openMenuDropdown()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.userProfilePageObject.myProfileLink.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getMyProfileUrl())]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify Notification Settings button redirects correctly + */ + UserProfileMenuHelper.verifyNotificationSettings = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.openMenuDropdown()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.userProfilePageObject.notificationSettingsLink.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getNotificationSettingsUrl())]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify Account & Security button redirects correctly + */ + UserProfileMenuHelper.verifyAccountAndSecurity = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.openMenuDropdown()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.userProfilePageObject.accountSecurityLink.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getAccountAndSecurityUrl())]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify Logout button redirects to home page. + */ + UserProfileMenuHelper.verifyLogout = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.openMenuDropdown()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.userProfilePageObject.logoutLink.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getHomePageUrl())]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + return UserProfileMenuHelper; +}()); +exports.UserProfileMenuHelper = UserProfileMenuHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLW1lbnUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2ZpbGUtdXBkYXRlL3VzZXItcHJvZmlsZS1tZW51L3VzZXItcHJvZmlsZS1tZW51LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBNEQ7QUFDNUQsaUVBQStEO0FBQy9ELCtEQUErRDtBQUUvRDtJQUFBO0lBcURBLENBQUM7SUFwREM7O09BRUc7SUFDVyxnQ0FBVSxHQUF4QjtRQUNFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLDRDQUFxQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ2lCLHNDQUFnQixHQUFwQzs7Ozs0QkFDRSxxQkFBTSw0QkFBWSxDQUFDLHlCQUF5QixFQUFFLEVBQUE7O3dCQUE5QyxTQUE4QyxDQUFDO3dCQUMvQyxxQkFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBckQsU0FBcUQsQ0FBQzs7Ozs7S0FDdkQ7SUFFRDs7T0FFRztJQUNpQixxQ0FBZSxHQUFuQzs7Ozs0QkFDRSxxQkFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBQTs7d0JBQTdCLFNBQTZCLENBQUM7d0JBQzlCLHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUF0RCxTQUFzRCxDQUFDO3dCQUN2RCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUE7O3dCQUFoRSxTQUFnRSxDQUFDOzs7OztLQUNsRTtJQUVEOztPQUVHO0lBQ2lCLGdEQUEwQixHQUE5Qzs7Ozs0QkFDRSxxQkFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBQTs7d0JBQTdCLFNBQTZCLENBQUM7d0JBQzlCLHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQWpFLFNBQWlFLENBQUM7d0JBQ2xFLHFCQUFNLDRCQUFZLENBQUMsYUFBYSxDQUFDLDRCQUFZLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxFQUFBOzt3QkFBM0UsU0FBMkUsQ0FBQzs7Ozs7S0FDN0U7SUFFRDs7T0FFRztJQUNpQiw4Q0FBd0IsR0FBNUM7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUE7O3dCQUE3QixTQUE2QixDQUFDO3dCQUM5QixxQkFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUE1RCxTQUE0RCxDQUFDO3dCQUM3RCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUMsRUFBQTs7d0JBQXpFLFNBQXlFLENBQUM7Ozs7O0tBQzNFO0lBRUQ7O09BRUc7SUFDaUIsa0NBQVksR0FBaEM7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUE7O3dCQUE3QixTQUE2QixDQUFDO3dCQUM5QixxQkFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBbkQsU0FBbUQsQ0FBQzt3QkFDcEQscUJBQU0sNEJBQVksQ0FBQyxhQUFhLENBQUMsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFBOzt3QkFBL0QsU0FBK0QsQ0FBQzs7Ozs7S0FDakU7SUFHSCw0QkFBQztBQUFELENBQUMsQUFyREQsSUFxREM7QUFyRFksc0RBQXFCIn0= \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js b/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js new file mode 100644 index 000000000..8cc88475c --- /dev/null +++ b/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UserProfilePageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var UserProfilePageObject = /** @class */ (function () { + function UserProfilePageObject() { + } + Object.defineProperty(UserProfilePageObject.prototype, "menuDropdown", { + /** + * Get Menu Dropdown Element + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('menu-wrap'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(UserProfilePageObject.prototype, "myProfileLink", { + /** + * Get My Profile Link + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('My profile'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(UserProfilePageObject.prototype, "notificationSettingsLink", { + /** + * Get Notification Settings Link + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('Notification settings'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(UserProfilePageObject.prototype, "accountSecurityLink", { + /** + * Get Account & Security Link + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('Account & security'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(UserProfilePageObject.prototype, "logoutLink", { + /** + * Get Logout Link + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('Log out'); + }, + enumerable: false, + configurable: true + }); + return UserProfilePageObject; +}()); +exports.UserProfilePageObject = UserProfilePageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLW1lbnUucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvZmlsZS11cGRhdGUvdXNlci1wcm9maWxlLW1lbnUvdXNlci1wcm9maWxlLW1lbnUucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXFEO0FBRXJEO0lBQUE7SUFtQ0EsQ0FBQztJQS9CQyxzQkFBVywrQ0FBWTtRQUh2Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsZ0RBQWE7UUFIeEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxRCxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLDJEQUF3QjtRQUhuQzs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckUsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxzREFBbUI7UUFIOUI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsNkNBQVU7UUFIckI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxDQUFDOzs7T0FBQTtJQUNILDRCQUFDO0FBQUQsQ0FBQyxBQW5DRCxJQW1DQztBQW5DWSxzREFBcUIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js new file mode 100644 index 000000000..6421e75ac --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js @@ -0,0 +1,405 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateProjectPageHelper = void 0; +var common_helper_1 = require("../../common-page/common.helper"); +var create_project_po_1 = require("./create-project.po"); +var CreateProjectPageHelper = /** @class */ (function () { + function CreateProjectPageHelper() { + } + /** + * Initialize Create Project page object + */ + CreateProjectPageHelper.initialize = function () { + this.createProjectPageObject = new create_project_po_1.CreateProjectPageObject(); + }; + /** + * Open Home page + */ + CreateProjectPageHelper.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, create_project_po_1.CreateProjectPageObject.open()]; + case 1: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verifies user can create design, development & deployment project + * @param projectData Project Creation Form Data + */ + CreateProjectPageHelper.verifyProjectCreation = function (projectData) { + return __awaiter(this, void 0, void 0, function () { + var appNameWithDate; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + appNameWithDate = common_helper_1.CommonHelper.appendDate(projectData.appName); + return [4 /*yield*/, this.clickNewProjectButton()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.navigateToViewSolutions()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.clickOnDesignDevelopmentDeploymentButton()]; + case 3: + _a.sent(); + return [4 /*yield*/, this.fillBeforeWeStartForm(projectData.answers)]; + case 4: + _a.sent(); + return [4 /*yield*/, this.fillBasicDetailsForm(appNameWithDate, projectData.appDescription)]; + case 5: + _a.sent(); + return [4 /*yield*/, this.fillAppDefinitionForm(projectData)]; + case 6: + _a.sent(); + return [4 /*yield*/, this.saveProject()]; + case 7: + _a.sent(); + return [4 /*yield*/, this.goToYourProject(appNameWithDate)]; + case 8: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify page is displayed correctly. + * @param expectedTitle page's expected title + */ + CreateProjectPageHelper.verifyFormDisplayed = function (expectedTitle) { + return __awaiter(this, void 0, void 0, function () { + var pageTitle; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.formPageTitle.getText()]; + case 1: + pageTitle = _a.sent(); + expect(pageTitle).toBe(expectedTitle); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify page header summary + * @param expectedTitle page's expected title + */ + CreateProjectPageHelper.verifyHeaderSummary = function (expectedTitle) { + return __awaiter(this, void 0, void 0, function () { + var pageTitle; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.headerSummary.getText()]; + case 1: + pageTitle = _a.sent(); + expect(pageTitle).toBe(expectedTitle); + return [2 /*return*/]; + } + }); + }); + }; + /** + * If there is draft project exist, click on create new project button + */ + CreateProjectPageHelper.checkDraftProject = function () { + return __awaiter(this, void 0, void 0, function () { + var isDraftProject; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.draftProject.isPresent()]; + case 1: + isDraftProject = _a.sent(); + if (!isDraftProject) return [3 /*break*/, 3]; + return [4 /*yield*/, this.createProjectPageObject.createNewProject.click()]; + case 2: + _a.sent(); + _a.label = 3; + case 3: return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify new project page is displayed with two options /Talent as Service, Solutions/ + */ + CreateProjectPageHelper.clickNewProjectButton = function () { + return __awaiter(this, void 0, void 0, function () { + var titles, _a, _b; + var _this = this; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.newProjectButton.click()]; + case 1: + _c.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitUntilVisibilityOf(function () { return _this.createProjectPageObject.viewSolutions; }, 'Wait for New Project Form', true)]; + case 2: + _c.sent(); + return [4 /*yield*/, this.checkDraftProject()]; + case 3: + _c.sent(); + return [4 /*yield*/, this.createProjectPageObject.newProjectPageTitles]; + case 4: + titles = _c.sent(); + expect(titles.length).toBe(2); + _a = expect; + return [4 /*yield*/, titles[0].getText()]; + case 5: + _a.apply(void 0, [_c.sent()]).toBe('SOLUTIONS'); + _b = expect; + return [4 /*yield*/, titles[1].getText()]; + case 6: + _b.apply(void 0, [_c.sent()]).toBe('TALENT AS A SERVICE'); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Click on "View Solutions" under "SOLUTIONS" section + */ + CreateProjectPageHelper.navigateToViewSolutions = function () { + return __awaiter(this, void 0, void 0, function () { + var title; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.viewSolutions.click()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.createProjectPageObject.solutionCatalogTitle.getText()]; + case 2: + title = _a.sent(); + expect(title).toBe('TOPCODER SOLUTIONS'); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Click on "Select" button under Design, Development and Deployment. + */ + CreateProjectPageHelper.clickOnDesignDevelopmentDeploymentButton = function () { + return __awaiter(this, void 0, void 0, function () { + var selectButton; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.selectButton()]; + case 1: + selectButton = _a.sent(); + return [4 /*yield*/, selectButton.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.verifyFormDisplayed('Before we start')]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Fill Before We Start form + * @param answers answers object defined by test data + */ + CreateProjectPageHelper.fillBeforeWeStartForm = function (answers) { + return __awaiter(this, void 0, void 0, function () { + var beforeWeStart; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + beforeWeStart = answers.beforeWeStart; + return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(beforeWeStart)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.verifyFormDisplayed('Basic Details')]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Fill Basic Details Form, then click next + * @param appName application name + * @param appDescription app description + */ + CreateProjectPageHelper.fillBasicDetailsForm = function (appName, appDescription) { + return __awaiter(this, void 0, void 0, function () { + var name, description; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + name = this.createProjectPageObject.appNameInput; + return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(name, appName)]; + case 1: + _a.sent(); + description = this.createProjectPageObject.appDescriptionInput; + return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(description, appDescription)]; + case 2: + _a.sent(); + return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; + case 3: + _a.sent(); + return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Fill App Definition Form, then click next + * @param projectData project data from test data + */ + CreateProjectPageHelper.fillAppDefinitionForm = function (projectData) { + return __awaiter(this, void 0, void 0, function () { + var _a, whatDoYouNeed, howManyScreens, willYourAppNeedMoreScreen, whereShouldAppWork, howShouldAppWorks, notesInput; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = projectData.answers, whatDoYouNeed = _a.whatDoYouNeed, howManyScreens = _a.howManyScreens, willYourAppNeedMoreScreen = _a.willYourAppNeedMoreScreen, whereShouldAppWork = _a.whereShouldAppWork, howShouldAppWorks = _a.howShouldAppWorks; + return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(whatDoYouNeed)]; + case 1: + _b.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(willYourAppNeedMoreScreen)]; + case 2: + _b.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(howManyScreens)]; + case 3: + _b.sent(); + return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; + case 4: + _b.sent(); + return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; + case 5: + _b.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(whereShouldAppWork)]; + case 6: + _b.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(howShouldAppWorks)]; + case 7: + _b.sent(); + return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; + case 8: + _b.sent(); + return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; + case 9: + _b.sent(); + return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; + case 10: + _b.sent(); + return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; + case 11: + _b.sent(); + notesInput = this.createProjectPageObject.notesInput; + return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(notesInput, projectData.notes)]; + case 12: + _b.sent(); + return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; + case 13: + _b.sent(); + return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; + case 14: + _b.sent(); + return [4 /*yield*/, this.verifyHeaderSummary('Your Project Estimate')]; + case 15: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Save project and verify success message + */ + CreateProjectPageHelper.saveProject = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.saveMyProject.click()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.createProjectPageObject.waitForSubTitle()]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Navigate to Your Project page and verify recently created project + * @param appName app name + */ + CreateProjectPageHelper.goToYourProject = function (appName) { + return __awaiter(this, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, this.createProjectPageObject.yourProjectButton.click()]; + case 1: + _b.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForProjectTitle()]; + case 2: + _b.sent(); + _a = expect; + return [4 /*yield*/, common_helper_1.CommonHelper.projectTitle().getText()]; + case 3: + _a.apply(void 0, [_b.sent()]).toBe(appName); + return [2 /*return*/]; + } + }); + }); + }; + return CreateProjectPageHelper; +}()); +exports.CreateProjectPageHelper = CreateProjectPageHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3QuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9jcmVhdGUtcHJvamVjdC9jcmVhdGUtcHJvamVjdC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaUVBQStEO0FBRS9ELHlEQUE4RDtBQUU5RDtJQUFBO0lBNExBLENBQUM7SUEzTEM7O09BRUc7SUFDVyxrQ0FBVSxHQUF4QjtRQUNFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLDJDQUF1QixFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ2lCLDRCQUFJLEdBQXhCOzs7OzRCQUNFLHFCQUFNLDJDQUF1QixDQUFDLElBQUksRUFBRSxFQUFBOzt3QkFBcEMsU0FBb0MsQ0FBQzt3QkFDckMscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzs7Ozs7S0FFM0M7SUFFRDs7O09BR0c7SUFDaUIsNkNBQXFCLEdBQXpDLFVBQTBDLFdBQXlCOzs7Ozs7d0JBQzNELGVBQWUsR0FBRyw0QkFBWSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBRXJFLHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFBOzt3QkFBbEMsU0FBa0MsQ0FBQzt3QkFDbkMscUJBQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUE7O3dCQUFwQyxTQUFvQyxDQUFDO3dCQUNyQyxxQkFBTSxJQUFJLENBQUMsd0NBQXdDLEVBQUUsRUFBQTs7d0JBQXJELFNBQXFELENBQUM7d0JBQ3RELHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUE7O3dCQUFyRCxTQUFxRCxDQUFDO3dCQUN0RCxxQkFB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js new file mode 100644 index 000000000..06f0aff47 --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L2NyZWF0ZS1wcm9qZWN0L2NyZWF0ZS1wcm9qZWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js new file mode 100644 index 000000000..29599e904 --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js @@ -0,0 +1,252 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateProjectPageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var logger_1 = require("../../../logger/logger"); +var config_helper_1 = require("../../../utils/config-helper"); +var common_helper_1 = require("../../common-page/common.helper"); +var CreateProjectPageObject = /** @class */ (function () { + function CreateProjectPageObject() { + } + /** + * Open the Home page + */ + CreateProjectPageObject.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getHomePageUrl())]; + case 1: + _a.sent(); + logger_1.logger.info('User navigated to Home Page'); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(CreateProjectPageObject.prototype, "newProjectButton", { + /** + * Get New Project Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('+ New Project'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "newProjectPageTitles", { + /** + * Get New Project Page Title Elements + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('_1vZbtq'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "viewSolutions", { + /** + * Get View Solutions button from Create Project Page + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('View Solutions'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "solutionCatalogTitle", { + /** + * Get Solution Catalog Page's title element + */ + get: function () { + var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('SelectProjectTemplate'); + return topcoder_testing_lib_1.ElementHelper.getElementByTag('h1', parentEl); + }, + enumerable: false, + configurable: true + }); + /** + * Get Select Button + */ + CreateProjectPageObject.prototype.selectButton = function () { + return __awaiter(this, void 0, void 0, function () { + var selectButtons; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByButtonText('Select')]; + case 1: + selectButtons = _a.sent(); + return [2 /*return*/, selectButtons[0]]; + } + }); + }); + }; + Object.defineProperty(CreateProjectPageObject.prototype, "yourProjectButton", { + /** + * Get Your Project Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementContainingText('Go to Project'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "nextButton", { + /** + * Get Next Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Next'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "saveMyProject", { + /** + * Get Save My Project button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Save my project'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "formPageTitle", { + /** + * Get Current Form Page's title element + */ + get: function () { + var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('YAZHbL'); + return topcoder_testing_lib_1.ElementHelper.getElementByTag('h3', parentEl); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "headerSummary", { + /** + * Get Project Header Summary + */ + get: function () { + var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('form-header-summary'); + return topcoder_testing_lib_1.ElementHelper.getElementByTag('h2', parentEl); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "appNameInput", { + /** + * Get App Name Input + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('name'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "appDescriptionInput", { + /** + * Get App Description Input + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('description'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "draftProject", { + /** + * Get Draft Project title + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('IncompleteProjectConfirmation'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "createNewProject", { + /** + * Get Create new Project button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Create a new project'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "notesInput", { + /** + * Get Notes input field + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByName('details.apiDefinition.notes'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CreateProjectPageObject.prototype, "subTitle", { + /** + * Get sub title + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementContainingText('Your project has been created'); + }, + enumerable: false, + configurable: true + }); + /** + * Wait for subtitle to show + */ + CreateProjectPageObject.prototype.waitForSubTitle = function () { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.waitUntilVisibilityOf(function () { return _this.subTitle; }, 'Wait for success message', true)]; + case 1: + _a.sent(); + logger_1.logger.info('Success Message Displayed'); + return [2 /*return*/]; + } + }); + }); + }; + return CreateProjectPageObject; +}()); +exports.CreateProjectPageObject = CreateProjectPageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3QucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L2NyZWF0ZS1wcm9qZWN0L2NyZWF0ZS1wcm9qZWN0LnBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBQzVELGlFQUErRDtBQUUvRDtJQUFBO0lBOElBLENBQUM7SUE3SUM7O09BRUc7SUFDaUIsNEJBQUksR0FBeEI7Ozs7NEJBQ0UscUJBQU0sb0NBQWEsQ0FBQyxJQUFJLENBQUMsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFBOzt3QkFBdkQsU0FBdUQsQ0FBQzt3QkFDeEQsZUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDOzs7OztLQUM1QztJQUtELHNCQUFXLHFEQUFnQjtRQUgzQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcseURBQW9CO1FBSC9COztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxrREFBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEUsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyx5REFBb0I7UUFIL0I7O1dBRUc7YUFDSDtZQUNFLElBQU0sUUFBUSxHQUFHLG9DQUFhLENBQUMscUJBQXFCLENBQ2xELHVCQUF1QixDQUN4QixDQUFDO1lBQ0YsT0FBTyxvQ0FBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js b/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js new file mode 100644 index 000000000..036883cbd --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js @@ -0,0 +1,152 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InviteCopilotHelper = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var common_helper_1 = require("../../common-page/common.helper"); +var invite_copilot_po_1 = require("./invite-copilot.po"); +var InviteCopilotHelper = /** @class */ (function () { + function InviteCopilotHelper() { + } + /** + * Initialize Invite Copilot page object + */ + InviteCopilotHelper.initialize = function () { + this.inviteCopilotPageObject = new invite_copilot_po_1.InviteCopilotPageObject(); + }; + /** + * Open Home Page + */ + InviteCopilotHelper.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, invite_copilot_po_1.InviteCopilotPageObject.open()]; + case 1: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify whether the Copilot Manager can invite to project + * @param copilotHandle copilot handle from test data + */ + InviteCopilotHelper.verifyManageProject = function (copilotHandle) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; + case 1: + _a.sent(); + return [4 /*yield*/, this.clickOnManageLink()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.sendInvitationToCopilot(copilotHandle)]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Click on Manage link of Copilot Section of Left menu + */ + InviteCopilotHelper.clickOnManageLink = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.waitAndClickElement(this.inviteCopilotPageObject.manageCopilotLink)]; + case 1: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(2000)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Send the invitation to Copilot Manager + * @param copilotHandle copilot handle from test data + */ + InviteCopilotHelper.sendInvitationToCopilot = function (copilotHandle) { + return __awaiter(this, void 0, void 0, function () { + var inputField, alertElement, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + inputField = this.inviteCopilotPageObject.inviteInputField; + return [4 /*yield*/, this.inviteCopilotPageObject.dropdownElement.click()]; + case 1: + _b.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(200)]; + case 2: + _b.sent(); + return [4 /*yield*/, inputField.sendKeys(copilotHandle)]; + case 3: + _b.sent(); + return [4 /*yield*/, this.inviteCopilotPageObject.selectedOption.click()]; + case 4: + _b.sent(); + return [4 /*yield*/, this.inviteCopilotPageObject.sendInviteButton.click()]; + case 5: + _b.sent(); + alertElement = common_helper_1.CommonHelper.alertBox(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; + case 6: + _b.sent(); + _a = expect; + return [4 /*yield*/, common_helper_1.CommonHelper.successAlert().getText()]; + case 7: + _a.apply(void 0, [_b.sent()]).toBe("YOU'VE SUCCESSFULLY INVITED MEMBER(S)."); + return [2 /*return*/]; + } + }); + }); + }; + return InviteCopilotHelper; +}()); +exports.InviteCopilotHelper = InviteCopilotHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLWNvcGlsb3QuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9pbnZpdGUtY29waWxvdC9pbnZpdGUtY29waWxvdC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQXFEO0FBQ3JELGlFQUErRDtBQUMvRCx5REFBOEQ7QUFFOUQ7SUFBQTtJQXVEQSxDQUFDO0lBdERDOztPQUVHO0lBQ1csOEJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSwyQ0FBdUIsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNpQix3QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSwyQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQXBDLFNBQW9DLENBQUM7d0JBQ3JDLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7Ozs7O0tBRTNDO0lBRUQ7OztPQUdHO0lBQ2lCLHVDQUFtQixHQUF2QyxVQUF3QyxhQUFxQjs7Ozs0QkFDM0QscUJBQU0sNEJBQVksQ0FBQywwQkFBMEIsRUFBRSxFQUFBOzt3QkFBL0MsU0FBK0MsQ0FBQzt3QkFDaEQscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUE7O3dCQUE5QixTQUE4QixDQUFDO3dCQUMvQixxQkFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEVBQUE7O3dCQUFqRCxTQUFpRCxDQUFDOzs7OztLQUNuRDtJQUlEOztPQUVHO0lBQ2tCLHFDQUFpQixHQUF0Qzs7Ozs0QkFDRSxxQkFBTSw0QkFBWSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFBOzt3QkFBdEYsU0FBc0YsQ0FBQzt3QkFDdkYscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUEvQixTQUErQixDQUFDOzs7OztLQUNqQztJQUVEOzs7T0FHRztJQUNrQiwyQ0FBdUIsR0FBNUMsVUFBNkMsYUFBcUI7Ozs7Ozt3QkFDMUQsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDakUscUJBQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQTFELFNBQTBELENBQUM7d0JBQzNELHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFDL0IscUJBQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBQTs7d0JBQXhDLFNBQXdDLENBQUM7d0JBQ3pDLHFCQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUF6RCxTQUF5RCxDQUFDO3dCQUMxRCxxQkFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUEzRCxTQUEyRCxDQUFDO3dCQUN0RCxZQUFZLEdBQUcsNEJBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDN0MscUJBQU0sNEJBQVksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsRUFBQTs7d0JBQXBELFNBQW9ELENBQUM7d0JBRXJELEtBQUEsTUFBTSxDQUFBO3dCQUFDLHFCQUFNLDRCQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dCQUFsRCxrQkFBTyxTQUEyQyxFQUFDLENBQUMsSUFBSSxDQUN0RCx3Q0FBd0MsQ0FDekMsQ0FBQzs7Ozs7S0FDSDtJQUNILDBCQUFDO0FBQUQsQ0FBQyxBQXZERCxJQXVEQztBQXZEWSxrREFBbUIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js b/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js new file mode 100644 index 000000000..d8d49d472 --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js @@ -0,0 +1,127 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InviteCopilotPageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var logger_1 = require("../../../logger/logger"); +var config_helper_1 = require("../../../utils/config-helper"); +var InviteCopilotPageObject = /** @class */ (function () { + function InviteCopilotPageObject() { + } + /** + * Open Home page + */ + InviteCopilotPageObject.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getHomePageUrl())]; + case 1: + _a.sent(); + logger_1.logger.info('User navigated to Home Page'); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(InviteCopilotPageObject.prototype, "manageCopilotLink", { + /** + * Get Manage Copilot Link From Left Menu + */ + get: function () { + var copilotDiv = topcoder_testing_lib_1.ElementHelper.getElementByCssContainingText('span._1hKIoG', 'Copilot'); + return topcoder_testing_lib_1.ElementHelper.getElementByXPath('following-sibling::span', copilotDiv); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(InviteCopilotPageObject.prototype, "dropdownElement", { + /** + * Get Copilot invitation dropdown element + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('react-select__placeholder'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(InviteCopilotPageObject.prototype, "inviteInputField", { + /** + * Get Copilot invitation input field + */ + get: function () { + var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('react-select__input'); + return topcoder_testing_lib_1.ElementHelper.getElementByTag('input', parentEl); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(InviteCopilotPageObject.prototype, "selectedOption", { + /** + * Get Selected option element from dropdown + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('react-select__option--is-focused'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(InviteCopilotPageObject.prototype, "sendInviteButton", { + /** + * Get Send Invite button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Send Invite'); + }, + enumerable: false, + configurable: true + }); + /** + * Get Invited Copilots List Elements + */ + InviteCopilotPageObject.prototype.invitedCopilots = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('span-name')]; + }); + }); + }; + return InviteCopilotPageObject; +}()); +exports.InviteCopilotPageObject = InviteCopilotPageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLWNvcGlsb3QucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L2ludml0ZS1jb3BpbG90L2ludml0ZS1jb3BpbG90LnBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBRTVEO0lBQUE7SUE2REEsQ0FBQztJQTVEQzs7T0FFRztJQUNpQiw0QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxvQ0FBYSxDQUFDLElBQUksQ0FBQyw0QkFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUE7O3dCQUF2RCxTQUF1RCxDQUFDO3dCQUN4RCxlQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7Ozs7O0tBQzVDO0lBS0Qsc0JBQVcsc0RBQWlCO1FBSDVCOztXQUVHO2FBQ0g7WUFDRSxJQUFNLFVBQVUsR0FBRyxvQ0FBYSxDQUFDLDZCQUE2QixDQUM1RCxjQUFjLEVBQ2QsU0FBUyxDQUNWLENBQUM7WUFFRixPQUFPLG9DQUFhLENBQUMsaUJBQWlCLENBQ3BDLHlCQUF5QixFQUN6QixVQUFVLENBQ1gsQ0FBQztRQUNKLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsb0RBQWU7UUFIMUI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcscURBQWdCO1FBSDNCOztXQUVHO2FBQ0g7WUFDRSxJQUFNLFFBQVEsR0FBRyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDNUUsT0FBTyxvQ0FBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxtREFBYztRQUh6Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUN4QyxrQ0FBa0MsQ0FDbkMsQ0FBQztRQUNKLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcscURBQWdCO1FBSDNCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLGlEQUFlLEdBQTVCOzs7Z0JBQ0Usc0JBQU8sb0NBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsRUFBQzs7O0tBQzdEO0lBQ0gsOEJBQUM7QUFBRCxDQUFDLEFBN0RELElBNkRDO0FBN0RZLDBEQUF1QiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js new file mode 100644 index 000000000..968390905 --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js @@ -0,0 +1,333 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProjectsHelper = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var common_helper_1 = require("../../common-page/common.helper"); +var projects_po_1 = require("./projects.po"); +var ProjectsHelper = /** @class */ (function () { + function ProjectsHelper() { + } + /** + * Initialize Projects page object + */ + ProjectsHelper.initialize = function () { + this.projectsPageObject = new projects_po_1.ProjectsPageObject(); + }; + /** + * Opens the Create Project page + */ + ProjectsHelper.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, projects_po_1.ProjectsPageObject.open()]; + case 1: + _a.sent(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; + case 2: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(4000)]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify whether the Copilot can Join the project + */ + ProjectsHelper.verifyCopilotProjectJoin = function () { + return __awaiter(this, void 0, void 0, function () { + var alertElement, _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + // Go to Recently created project + return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; + case 1: + // Go to Recently created project + _b.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(4000)]; + case 2: + _b.sent(); + // Click on Join Project button + return [4 /*yield*/, this.projectsPageObject.joinProjectButton.click()]; + case 3: + // Click on Join Project button + _b.sent(); + alertElement = common_helper_1.CommonHelper.alertBox(); + return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; + case 4: + _b.sent(); + // Verify Success Alert + _a = expect; + return [4 /*yield*/, common_helper_1.CommonHelper.successAlert().getText()]; + case 5: + // Verify Success Alert + _a.apply(void 0, [_b.sent()]).toBe("YOU'VE SUCCESSFULLY JOINED THE PROJECT."); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify user can search for projects using project name, user handle, ref code + * @param searchProject object for search + */ + ProjectsHelper.verifyProjectSearch = function (searchProject) { + return __awaiter(this, void 0, void 0, function () { + var allProjectsBeforeSearch, beforeSearchLength, firstProjectBeforeSearch, allProjectsAfterSearch, _a, _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(3000)]; + case 1: + _c.sent(); + return [4 /*yield*/, this.projectsPageObject.projectTitles()]; + case 2: + allProjectsBeforeSearch = _c.sent(); + beforeSearchLength = allProjectsBeforeSearch.length; + return [4 /*yield*/, allProjectsBeforeSearch[0].getText()]; + case 3: + firstProjectBeforeSearch = _c.sent(); + // Search by project name + return [4 /*yield*/, this.projectsPageObject.fillSearchBar(searchProject.searchByName)]; + case 4: + // Search by project name + _c.sent(); + return [4 /*yield*/, this.verifyAllProjects(searchProject.searchByName)]; + case 5: + _c.sent(); + return [4 /*yield*/, this.clickCancelButton()]; + case 6: + _c.sent(); + // Search by Ref + return [4 /*yield*/, this.projectsPageObject.fillSearchBar(searchProject.searchByRef)]; + case 7: + // Search by Ref + _c.sent(); + return [4 /*yield*/, this.verifyProjectWithRef(searchProject.searchByRef)]; + case 8: + _c.sent(); + // Click on Clear button + return [4 /*yield*/, this.clickCancelButton()]; + case 9: + // Click on Clear button + _c.sent(); + // Search by Handle + return [4 /*yield*/, this.projectsPageObject.fillSearchBar(searchProject.searchByHandle)]; + case 10: + // Search by Handle + _c.sent(); + return [4 /*yield*/, this.verifyProjectSearchByHandle(searchProject.searchByHandle)]; + case 11: + _c.sent(); + return [4 /*yield*/, this.clickCancelButton()]; + case 12: + _c.sent(); + return [4 /*yield*/, this.projectsPageObject.projectTitles()]; + case 13: + allProjectsAfterSearch = _c.sent(); + expect(beforeSearchLength).toEqual(allProjectsAfterSearch.length); + _b = (_a = expect(firstProjectBeforeSearch)).toEqual; + return [4 /*yield*/, allProjectsAfterSearch[0].getText()]; + case 14: + _b.apply(_a, [_c.sent()]); + return [2 /*return*/]; + } + }); + }); + }; + /** + * verify user can switch between the Project tabs + */ + ProjectsHelper.verifySwitchTabs = function () { + return __awaiter(this, void 0, void 0, function () { + var tabNames, expectedLinkStatuses; + var _this = this; + return __generator(this, function (_a) { + tabNames = [ + 'Active', + 'In review', + 'Reviewed', + 'Completed', + 'Cancelled', + 'Paused', + 'All Projects', + ]; + expectedLinkStatuses = [ + 'active', + 'in_review', + 'reviewed', + 'completed', + 'cancelled', + 'paused', + '', + ]; + tabNames.map(function (currentTab, index) { return __awaiter(_this, void 0, void 0, function () { + var activeTab, currentUrl; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.projectsPageObject.tabElement(currentTab)]; + case 2: + activeTab = _a.sent(); + return [4 /*yield*/, activeTab.click()]; + case 3: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; + case 4: + currentUrl = _a.sent(); + expect(currentUrl).toContain(expectedLinkStatuses[index]); + return [2 /*return*/]; + } + }); + }); }); + return [2 /*return*/]; + }); + }); + }; + /** + * Verify all projects + * @param searchTerm search term + */ + ProjectsHelper.verifyAllProjects = function (searchTerm) { + return __awaiter(this, void 0, void 0, function () { + var searchResultElements; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.projectsPageObject.projectTitles()]; + case 1: + searchResultElements = _a.sent(); + searchResultElements.map(function (project) { return __awaiter(_this, void 0, void 0, function () { + var projectName; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, project.getText()]; + case 1: + projectName = _a.sent(); + expect(projectName.toLowerCase()).toContain(searchTerm); + return [2 /*return*/]; + } + }); + }); }); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify projects with ref + * @param searchTerm search term + */ + ProjectsHelper.verifyProjectWithRef = function (searchTerm) { + return __awaiter(this, void 0, void 0, function () { + var ref; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.projectsPageObject.refText.getText()]; + case 1: + ref = _a.sent(); + expect(ref).toBe(searchTerm); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Click on clear button + */ + ProjectsHelper.clickCancelButton = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.projectsPageObject.clearButton.click()]; + case 1: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; + case 2: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Verify project search results by handle + * @param memberHandle member handle from test data + */ + ProjectsHelper.verifyProjectSearchByHandle = function (memberHandle) { + return __awaiter(this, void 0, void 0, function () { + var _a; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; + case 1: + _b.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilVisibilityOf(this.projectsPageObject.firstMember)]; + case 2: + _b.sent(); + _a = expect; + return [4 /*yield*/, this.projectsPageObject.firstMember.getText()]; + case 3: + _a.apply(void 0, [_b.sent()]).toBe(memberHandle); + return [4 /*yield*/, this.projectsPageObject.backButton.click()]; + case 4: + _b.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; + case 5: + _b.sent(); + return [2 /*return*/]; + } + }); + }); + }; + return ProjectsHelper; +}()); +exports.ProjectsHelper = ProjectsHelper; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9wcm9qZWN0cy9wcm9qZWN0cy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsNkRBQXFEO0FBQ3JELGlFQUErRDtBQUUvRCw2Q0FBbUQ7QUFFbkQ7SUFBQTtJQXdKQSxDQUFDO0lBdkpDOztPQUVHO0lBQ1cseUJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxnQ0FBa0IsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNpQixtQkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxnQ0FBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQS9CLFNBQStCLENBQUM7d0JBQ2hDLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7d0JBQzFDLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFFRDs7T0FFRztJQUNpQix1Q0FBd0IsR0FBNUM7Ozs7OztvQkFDRSxpQ0FBaUM7b0JBQ2pDLHFCQUFNLDRCQUFZLENBQUMsMEJBQTBCLEVBQUUsRUFBQTs7d0JBRC9DLGlDQUFpQzt3QkFDakMsU0FBK0MsQ0FBQzt3QkFDaEQscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUEvQixTQUErQixDQUFDO3dCQUVoQywrQkFBK0I7d0JBQy9CLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBRHZELCtCQUErQjt3QkFDL0IsU0FBdUQsQ0FBQzt3QkFDbEQsWUFBWSxHQUFH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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js new file mode 100644 index 000000000..5aeb23354 --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L3Byb2plY3RzL3Byb2plY3RzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js new file mode 100644 index 000000000..49c687445 --- /dev/null +++ b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js @@ -0,0 +1,207 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ProjectsPageObject = void 0; +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var logger_1 = require("../../../logger/logger"); +var config_helper_1 = require("../../../utils/config-helper"); +var common_helper_1 = require("../../common-page/common.helper"); +var ProjectsPageObject = /** @class */ (function () { + function ProjectsPageObject() { + } + /** + * Open the Home page + */ + ProjectsPageObject.open = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getHomePageUrl())]; + case 1: + _a.sent(); + logger_1.logger.info('User navigated to Home Page'); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(ProjectsPageObject.prototype, "joinProjectButton", { + /** + * Get Join Project Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Join project'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ProjectsPageObject.prototype, "searchInput", { + /** + * Get Search Input + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('search-bar__text'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ProjectsPageObject.prototype, "searchButton", { + /** + * Get Search Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('search-icon-wrap'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ProjectsPageObject.prototype, "clearButton", { + /** + * Get Clear Button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('search-bar__clear'); + }, + enumerable: false, + configurable: true + }); + /** + * Get All Projects By Title + */ + ProjectsPageObject.prototype.projectTitles = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('link-title')]; + }); + }); + }; + /** + * Fill search bar with desired input + * @param inputText input text + */ + ProjectsPageObject.prototype.fillSearchBar = function (inputText) { + return __awaiter(this, void 0, void 0, function () { + var searchInput; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + searchInput = this.searchInput; + return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(searchInput, inputText)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.searchButton.click()]; + case 2: + _a.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + /** + * Get Tab Element + * @param tabName tab name + */ + ProjectsPageObject.prototype.tabElement = function (tabName) { + return __awaiter(this, void 0, void 0, function () { + var parentEl; + return __generator(this, function (_a) { + parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('_3M4SZg'); + return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCssContainingText('li._2ZbGEn', tabName, parentEl)]; + }); + }); + }; + Object.defineProperty(ProjectsPageObject.prototype, "projectDashboard", { + /** + * Get Project Dashboard Element + */ + get: function () { + var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('WtXOeL _3rjDL1'); + return topcoder_testing_lib_1.ElementHelper.getElementContainingText('Dashboard', parentEl); + }, + enumerable: false, + configurable: true + }); + /** + * Get Active Tab Element + */ + ProjectsPageObject.prototype.activeTab = function () { + return __awaiter(this, void 0, void 0, function () { + var tabNames; + return __generator(this, function (_a) { + tabNames = topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('_2ZbGEn E7SY3s'); + return [2 /*return*/, tabNames[0]]; + }); + }); + }; + Object.defineProperty(ProjectsPageObject.prototype, "firstMember", { + /** + * Get first member's element + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('GV60ta'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ProjectsPageObject.prototype, "backButton", { + /** + * Get back to dashboard button + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_3Ielx-'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(ProjectsPageObject.prototype, "refText", { + /** + * Get ref containing element + */ + get: function () { + return topcoder_testing_lib_1.ElementHelper.getElementByClassName('txt-gray-md'); + }, + enumerable: false, + configurable: true + }); + return ProjectsPageObject; +}()); +exports.ProjectsPageObject = ProjectsPageObject; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L3Byb2plY3RzL3Byb2plY3RzLnBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBQzVELGlFQUErRDtBQUUvRDtJQUFBO0lBd0dBLENBQUM7SUF2R0M7O09BRUc7SUFDaUIsdUJBQUksR0FBeEI7Ozs7NEJBQ0UscUJBQU0sb0NBQWEsQ0FBQyxJQUFJLENBQUMsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFBOzt3QkFBdkQsU0FBdUQsQ0FBQzt3QkFDeEQsZUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDOzs7OztLQUM1QztJQUtELHNCQUFXLGlEQUFpQjtRQUg1Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsMkNBQVc7UUFIdEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsNENBQVk7UUFIdkI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsMkNBQVc7UUFIdEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7OztPQUFBO0lBRUQ7O09BRUc7SUFDVSwwQ0FBYSxHQUExQjs7O2dCQUNFLHNCQUFPLG9DQUFhLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLEVBQUM7OztLQUM5RDtJQUVEOzs7T0FHRztJQUNVLDBDQUFhLEdBQTFCLFVBQTJCLFNBQWlCOzs7Ozs7d0JBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO3dCQUNyQyxxQkFBTSw0QkFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUE7O3dCQUF6RCxTQUF5RCxDQUFDO3dCQUMxRCxxQkFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzt3QkFDaEMscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUEvQixTQUErQixDQUFDOzs7OztLQUNqQztJQUVEOzs7T0FHRztJQUNVLHVDQUFVLEdBQXZCLFVBQXdCLE9BQWU7Ozs7Z0JBQy9CLFFBQVEsR0FBRyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoRSxzQkFBTyxvQ0FBYSxDQUFDLDZCQUE2QixDQUNoRCxZQUFZLEVBQ1osT0FBTyxFQUNQLFFBQVEsQ0FDVCxFQUFDOzs7S0FDSDtJQUtELHNCQUFXLGdEQUFnQjtRQUgzQjs7V0FFRzthQUNIO1lBQ0UsSUFBTSxRQUFRLEdBQUcsb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sb0NBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLHNDQUFTLEdBQXRCOzs7O2dCQUNRLFFBQVEsR0FBRyxvQ0FBYSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzNFLHNCQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQzs7O0tBQ3BCO0lBS0Qsc0JBQVcsMkNBQVc7UUFIdEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLDBDQUFVO1FBSHJCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyx1Q0FBTztRQUhsQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUM7OztPQUFBO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBeEdELElBd0dDO0FBeEdZLGdEQUFrQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-data/test-data.json b/connect-automation/temp/test-data/test-data.json new file mode 100644 index 000000000..bf7a971fe --- /dev/null +++ b/connect-automation/temp/test-data/test-data.json @@ -0,0 +1,46 @@ +{ + "userProfile": { + "firstName": "John", + "lastName": "Doe", + "title": "programmer", + "country": "Nepal", + "countryCode": "+977", + "countryAbbr": "NPL", + "companyUrl": "www.topcoder.com", + "localTimezone": "Africa/Accra", + "startTime": "9:00", + "endTime": "18:00", + "businessPhoneCountry": "India", + "businessPhoneCountryCode": "+91" + }, + "projectData": { + "appName": "Automation", + "appDescription": "This project is created by automated test", + "answers": { + "beforeWeStart": "I am just exploring my options", + "whatDoYouNeed": "Development & QA", + "willYourAppNeedMoreScreen": "Yes", + "howManyScreens": "45-60 screens", + "whereShouldAppWork": "Web Browser", + "howShouldAppWorks": "I want a web app that is installable on desktops." + }, + "notes": "Notes from test" + }, + "inviteCopilot": { + "copilotHandle": "TCConnCopilot" + }, + "searchProject": { + "searchByName": "taas", + "searchByRef": "cjamedit", + "searchByHandle": "mailmemakar402" + }, + "phaseCreation": { + "formData": { + "title": "Dev Phase", + "daysBetweenStartAndEndDate": 3, + "reportName": "Reporting 1", + "deliverableReviewName": "Deliverable Review 1", + "finalDeliverableReviewName": "Final Deliverable Review 1" + } + } +} diff --git a/connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js b/connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js new file mode 100644 index 000000000..facbc812b --- /dev/null +++ b/connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js @@ -0,0 +1,98 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var create_new_phase_helper_1 = require("../../page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper"); +var testData = require("../../test-data/test-data.json"); +var config_helper_1 = require("../../utils/config-helper"); +describe('Connect App - Create New Phase Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + var copilotUser; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + copilotUser = config_helper_1.ConfigHelper.getCopilotUser(); + return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotUser.email, copilotUser.password)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + create_new_phase_helper_1.CreateNewPhaseHelper.initialize(); + // Step Sequence #1: Go to the given app URL + return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; + case 1: + // Step Sequence #1: Go to the given app URL + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_001] should verify user can create a Phase and Publish it.', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, create_new_phase_helper_1.CreateNewPhaseHelper.verifyCreateNewPhase(testData.phaseCreation.formData)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC1zdWl0ZXMvcGhhc2UtY3JlYXRpb24tZmxvdy9jcmVhdGUtbmV3LXBoYXNlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RUFBNEU7QUFDNUUsMkhBQXVIO0FBQ3ZILHlEQUEyRDtBQUMzRCwyREFBeUQ7QUFFekQsUUFBUSxDQUFDLHVDQUF1QyxFQUFFO0lBQ2hEOztPQUVHO0lBQ0gsU0FBUyxDQUFDOzs7OztvQkFFRixXQUFXLEdBQUcsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDbEQscUJBQU0sNEJBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUE7O29CQUFqRSxTQUFpRSxDQUFDOzs7O1NBQ25FLENBQUMsQ0FBQztJQUVIOztPQUVHO0lBQ0gsUUFBUSxDQUFDOzs7d0JBQ1AscUJBQU0sNEJBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQTs7b0JBQTNCLFNBQTJCLENBQUM7Ozs7U0FDN0IsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDOzs7O29CQUNULDhDQUFvQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNsQyw0Q0FBNEM7b0JBQzVDLHFCQUFNLDRCQUFZLENBQUMsMEJBQTBCLEVBQUUsRUFBQTs7b0JBRC9DLDRDQUE0QztvQkFDNUMsU0FBK0MsQ0FBQzs7OztTQUNqRCxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUU7Ozt3QkFDbkUscUJBQU0sOENBQW9CLENBQUMsb0JBQW9CLENBQzdDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUNoQyxFQUFBOztvQkFGRCxTQUVDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/footer-menu.spec.js b/connect-automation/temp/test-suites/profile-update/footer-menu.spec.js new file mode 100644 index 000000000..e03b938ad --- /dev/null +++ b/connect-automation/temp/test-suites/profile-update/footer-menu.spec.js @@ -0,0 +1,90 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var footer_helper_1 = require("../../page-objects/profile-update/footer/footer.helper"); +var config_helper_1 = require("../../utils/config-helper"); +describe('Connect App - Footer Menu Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // Precondition: User should be logged in. + return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; + case 1: + // Precondition: User should be logged in. + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + // Initialize Footer Menu Helper + footer_helper_1.FooterHelper.initialize(); + return [2 /*return*/]; + }); + }); }); + it('[TC_006] should verify copyright year is displaying correctly.', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, footer_helper_1.FooterHelper.verifyCopyright()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLW1lbnUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2ZpbGUtdXBkYXRlL2Zvb3Rlci1tZW51LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RUFBNEU7QUFDNUUsd0ZBQXNGO0FBQ3RGLDJEQUF5RDtBQUV6RCxRQUFRLENBQUMsa0NBQWtDLEVBQUU7SUFDM0M7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7Z0JBQ1IsMENBQTBDO2dCQUMxQyxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FDdEIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsRUFDMUIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsQ0FDM0IsRUFBQTs7b0JBSkQsMENBQTBDO29CQUMxQyxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7WUFDVCxnQ0FBZ0M7WUFDaEMsNEJBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQzs7O1NBQzNCLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRTs7O3dCQUNuRSxxQkFBTSw0QkFBWSxDQUFDLGVBQWUsRUFBRSxFQUFBOztvQkFBcEMsU0FBb0MsQ0FBQzs7OztTQUN0QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/left-menu.spec.js b/connect-automation/temp/test-suites/profile-update/left-menu.spec.js new file mode 100644 index 000000000..4ca1da54b --- /dev/null +++ b/connect-automation/temp/test-suites/profile-update/left-menu.spec.js @@ -0,0 +1,109 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var left_menu_helper_1 = require("../../page-objects/profile-update/left-menu/left-menu.helper"); +var config_helper_1 = require("../../utils/config-helper"); +var my_profile_helper_1 = require("../../page-objects/profile-update/my-profile/my-profile.helper"); +describe('Connect App - Left Menu Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // Precondition: User should be logged in. + return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; + case 1: + // Precondition: User should be logged in. + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + my_profile_helper_1.MyProfilePageHelper.initialize(); + left_menu_helper_1.LeftMenuPageHelper.initialize(); + return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.open()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_004] should verify whether the user can navigate the page successfully.', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyNotificationSettings()]; + case 1: + _a.sent(); + return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyProfileInformation()]; + case 2: + _a.sent(); + return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyAccountAndSecurity()]; + case 3: + _a.sent(); + return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyAllProjects()]; + case 4: + _a.sent(); + return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyNotifications()]; + case 5: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1tZW51LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0LXN1aXRlcy9wcm9maWxlLXVwZGF0ZS9sZWZ0LW1lbnUuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhFQUE0RTtBQUM1RSxpR0FBa0c7QUFDbEcsMkRBQXlEO0FBQ3pELG9HQUFxRztBQUVyRyxRQUFRLENBQUMsZ0NBQWdDLEVBQUU7SUFDekM7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7Z0JBQ1IsMENBQTBDO2dCQUMxQyxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FDdEIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsRUFDMUIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsQ0FDM0IsRUFBQTs7b0JBSkQsMENBQTBDO29CQUMxQyxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7OztvQkFDVCx1Q0FBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDakMscUNBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hDLHFCQUFNLHVDQUFtQixDQUFDLElBQUksRUFBRSxFQUFBOztvQkFBaEMsU0FBZ0MsQ0FBQzs7OztTQUNsQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkVBQTZFLEVBQUU7Ozt3QkFDaEYscUJBQU0scUNBQWtCLENBQUMsMEJBQTBCLEVBQUUsRUFBQTs7b0JBQXJELFNBQXFELENBQUM7b0JBQ3RELHFCQUFNLHFDQUFrQixDQUFDLHdCQUF3QixFQUFFLEVBQUE7O29CQUFuRCxTQUFtRCxDQUFDO29CQUNwRCxxQkFBTSxxQ0FBa0IsQ0FBQyx3QkFBd0IsRUFBRSxFQUFBOztvQkFBbkQsU0FBbUQsQ0FBQztvQkFDcEQscUJBQU0scUNBQWtCLENBQUMsaUJBQWlCLEVBQUUsRUFBQTs7b0JBQTVDLFNBQTRDLENBQUM7b0JBQzdDLHFCQUFNLHFDQUFrQixDQUFDLG1CQUFtQixFQUFFLEVBQUE7O29CQUE5QyxTQUE4QyxDQUFDOzs7O1NBQ2hELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/my-profile.spec.js b/connect-automation/temp/test-suites/profile-update/my-profile.spec.js new file mode 100644 index 000000000..136351aef --- /dev/null +++ b/connect-automation/temp/test-suites/profile-update/my-profile.spec.js @@ -0,0 +1,116 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var testData = require("../../test-data/test-data.json"); +var config_helper_1 = require("../../utils/config-helper"); +var my_profile_helper_1 = require("../../page-objects/profile-update/my-profile/my-profile.helper"); +describe('Connect App - My Profile Page Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // Precondition: User should be logged in. + return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; + case 1: + // Precondition: User should be logged in. + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + my_profile_helper_1.MyProfilePageHelper.initialize(); + return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.open()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_001] should verify whether the current user can update the basic information.', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.verifyProfileInformation(testData.userProfile)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_002] should verify whether the Business Phone/Country sync accordingly.', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.verifyBusinessPhoneSync(testData.userProfile)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_003] should verify whether the user can close the profile window.', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.verifyUserCloseProfileWindow()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC1zdWl0ZXMvcHJvZmlsZS11cGRhdGUvbXktcHJvZmlsZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQTRFO0FBQzVFLHlEQUEyRDtBQUMzRCwyREFBeUQ7QUFDekQsb0dBQXFHO0FBRXJHLFFBQVEsQ0FBQyxzQ0FBc0MsRUFBRTtJQUMvQzs7T0FFRztJQUNILFNBQVMsQ0FBQzs7OztnQkFDUiwwQ0FBMEM7Z0JBQzFDLHFCQUFNLDRCQUFZLENBQUMsS0FBSyxDQUN0Qiw0QkFBWSxDQUFDLFdBQVcsRUFBRSxFQUMxQiw0QkFBWSxDQUFDLFdBQVcsRUFBRSxDQUMzQixFQUFBOztvQkFKRCwwQ0FBMEM7b0JBQzFDLFNBR0MsQ0FBQzs7OztTQUNILENBQUMsQ0FBQztJQUVIOztPQUVHO0lBQ0gsUUFBUSxDQUFDOzs7d0JBQ1AscUJBQU0sNEJBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQTs7b0JBQTNCLFNBQTJCLENBQUM7Ozs7U0FDN0IsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDOzs7O29CQUNULHVDQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNqQyxxQkFBTSx1Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7b0JBQWhDLFNBQWdDLENBQUM7Ozs7U0FDbEMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1GQUFtRixFQUFFOzs7d0JBQ3RGLHFCQUFNLHVDQUFtQixDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBQTs7b0JBQXhFLFNBQXdFLENBQUM7Ozs7U0FDMUUsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZFQUE2RSxFQUFFOzs7d0JBQ2hGLHFCQUFNLHVDQUFtQixDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBQTs7b0JBQXZFLFNBQXVFLENBQUM7Ozs7U0FDekUsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVFQUF1RSxFQUFFOzs7d0JBQzFFLHFCQUFNLHVDQUFtQixDQUFDLDRCQUE0QixFQUFFLEVBQUE7O29CQUF4RCxTQUF3RCxDQUFDOzs7O1NBQzFELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js b/connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js new file mode 100644 index 000000000..6f9c86ac7 --- /dev/null +++ b/connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js @@ -0,0 +1,99 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var user_profile_menu_helper_1 = require("../../page-objects/profile-update/user-profile-menu/user-profile-menu.helper"); +var config_helper_1 = require("../../utils/config-helper"); +describe('Connect App - User Profile Menu Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // Precondition: User should be logged in. + return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; + case 1: + // Precondition: User should be logged in. + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + // Initialize User Profile Menu Helper + user_profile_menu_helper_1.UserProfileMenuHelper.initialize(); + return [2 /*return*/]; + }); + }); }); + it('[TC_005] should whether the user can navigate the page successfully from profile icon menu.', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyMyProfile()]; + case 1: + _a.sent(); + return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyNotificationSettings()]; + case 2: + _a.sent(); + return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyAccountAndSecurity()]; + case 3: + _a.sent(); + return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyLogout()]; + case 4: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLW1lbnUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2ZpbGUtdXBkYXRlL3VzZXItcHJvZmlsZS1tZW51LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RUFBNEU7QUFDNUUseUhBQXFIO0FBQ3JILDJEQUF5RDtBQUV6RCxRQUFRLENBQUMsd0NBQXdDLEVBQUU7SUFDakQ7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7Z0JBQ1IsMENBQTBDO2dCQUMxQyxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FDdEIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsRUFDMUIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsQ0FDM0IsRUFBQTs7b0JBSkQsMENBQTBDO29CQUMxQyxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7WUFDVCxzQ0FBc0M7WUFDdEMsZ0RBQXFCLENBQUMsVUFBVSxFQUFFLENBQUM7OztTQUNwQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkZBQTZGLEVBQUU7Ozt3QkFDaEcscUJBQU0sZ0RBQXFCLENBQUMsZUFBZSxFQUFFLEVBQUE7O29CQUE3QyxTQUE2QyxDQUFDO29CQUM5QyxxQkFBTSxnREFBcUIsQ0FBQywwQkFBMEIsRUFBRSxFQUFBOztvQkFBeEQsU0FBd0QsQ0FBQztvQkFDekQscUJBQU0sZ0RBQXFCLENBQUMsd0JBQXdCLEVBQUUsRUFBQTs7b0JBQXRELFNBQXNELENBQUM7b0JBQ3ZELHFCQUFNLGdEQUFxQixDQUFDLFlBQVksRUFBRSxFQUFBOztvQkFBMUMsU0FBMEMsQ0FBQzs7OztTQUM1QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js b/connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js new file mode 100644 index 000000000..081546f40 --- /dev/null +++ b/connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js @@ -0,0 +1,98 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var create_project_helper_1 = require("../../page-objects/project-creation-flow/create-project/create-project.helper"); +var testData = require("../../test-data/test-data.json"); +var config_helper_1 = require("../../utils/config-helper"); +describe('Connect App - Create Project Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + var customerUser; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + customerUser = config_helper_1.ConfigHelper.getCustomerUser(); + return [4 /*yield*/, common_helper_1.CommonHelper.login(customerUser.email, customerUser.password)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + create_project_helper_1.CreateProjectPageHelper.initialize(); + // Step Sequence #1: Go to the given app URL + return [4 /*yield*/, create_project_helper_1.CreateProjectPageHelper.open()]; + case 1: + // Step Sequence #1: Go to the given app URL + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_001] should verify whether the current user can create a Design, Development & Deployment project', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, create_project_helper_1.CreateProjectPageHelper.verifyProjectCreation(testData.projectData)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3Quc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9jcmVhdGUtcHJvamVjdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQTRFO0FBQzVFLHVIQUF3SDtBQUN4SCx5REFBMkQ7QUFDM0QsMkRBQXlEO0FBRXpELFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRTtJQUM5Qzs7T0FFRztJQUNILFNBQVMsQ0FBQzs7Ozs7b0JBRUYsWUFBWSxHQUFHLDRCQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3BELHFCQUFNLDRCQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFBOztvQkFBbkUsU0FBbUUsQ0FBQzs7OztTQUNyRSxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7OztvQkFDVCwrQ0FBdUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDckMsNENBQTRDO29CQUM1QyxxQkFBTSwrQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7b0JBRHBDLDRDQUE0QztvQkFDNUMsU0FBb0MsQ0FBQzs7OztTQUN0QyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUdBQXVHLEVBQUU7Ozt3QkFDMUcscUJBQU0sK0NBQXVCLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFBOztvQkFBekUsU0FBeUUsQ0FBQzs7OztTQUMzRSxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js b/connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js new file mode 100644 index 000000000..3f7dcacbb --- /dev/null +++ b/connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js @@ -0,0 +1,98 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var invite_copilot_helper_1 = require("../../page-objects/project-creation-flow/invite-copilot/invite-copilot.helper"); +var testData = require("../../test-data/test-data.json"); +var config_helper_1 = require("../../utils/config-helper"); +describe('Connect App - Invite Copilot Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + var copilotManagerUser; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + copilotManagerUser = config_helper_1.ConfigHelper.getCopilotManagerUser(); + return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotManagerUser.email, copilotManagerUser.password)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + invite_copilot_helper_1.InviteCopilotHelper.initialize(); + // Step Sequence #1: Go to the given app URL + return [4 /*yield*/, invite_copilot_helper_1.InviteCopilotHelper.open()]; + case 1: + // Step Sequence #1: Go to the given app URL + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_002] should verify whether the Copilot Manager can invite to project', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, invite_copilot_helper_1.InviteCopilotHelper.verifyManageProject(testData.inviteCopilot.copilotHandle)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLWNvcGlsb3Quc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9pbnZpdGUtY29waWxvdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQTRFO0FBQzVFLHVIQUFvSDtBQUNwSCx5REFBMkQ7QUFDM0QsMkRBQXlEO0FBRXpELFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRTtJQUM5Qzs7T0FFRztJQUNILFNBQVMsQ0FBQzs7Ozs7b0JBRUYsa0JBQWtCLEdBQUcsNEJBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUNoRSxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUE7O29CQUEvRSxTQUErRSxDQUFDOzs7O1NBQ2pGLENBQUMsQ0FBQztJQUVIOztPQUVHO0lBQ0gsUUFBUSxDQUFDOzs7d0JBQ1AscUJBQU0sNEJBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQTs7b0JBQTNCLFNBQTJCLENBQUM7Ozs7U0FDN0IsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDOzs7O29CQUNULDJDQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNqQyw0Q0FBNEM7b0JBQzVDLHFCQUFNLDJDQUFtQixDQUFDLElBQUksRUFBRSxFQUFBOztvQkFEaEMsNENBQTRDO29CQUM1QyxTQUFnQyxDQUFDOzs7O1NBQ2xDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwRUFBMEUsRUFBRTs7O3dCQUM3RSxxQkFBTSwyQ0FBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFBOztvQkFBbkYsU0FBbUYsQ0FBQzs7OztTQUNyRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/project-creation-flow/projects.spec.js b/connect-automation/temp/test-suites/project-creation-flow/projects.spec.js new file mode 100644 index 000000000..0814f2eff --- /dev/null +++ b/connect-automation/temp/test-suites/project-creation-flow/projects.spec.js @@ -0,0 +1,136 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var topcoder_testing_lib_1 = require("topcoder-testing-lib"); +var common_helper_1 = require("../../page-objects/common-page/common.helper"); +var projects_helper_1 = require("../../page-objects/project-creation-flow/projects/projects.helper"); +var testData = require("../../test-data/test-data.json"); +var config_helper_1 = require("../../utils/config-helper"); +describe('Connect App - Copilot Role Project Related Tests:', function () { + /** + * Sets up the browser + */ + beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { + var copilotUser; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + copilotUser = config_helper_1.ConfigHelper.getCopilotUser(); + return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotUser.email, copilotUser.password)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + /** + * Logs out + */ + afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + projects_helper_1.ProjectsHelper.initialize(); + // Step Sequence #1: Go to the given app URL + return [4 /*yield*/, projects_helper_1.ProjectsHelper.open()]; + case 1: + // Step Sequence #1: Go to the given app URL + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_003] should verify whether the Copilot can Join the project', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, projects_helper_1.ProjectsHelper.verifyCopilotProjectJoin()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_004] should verify user can search for projects using project name, user handle, ref code', function () { return __awaiter(void 0, void 0, void 0, function () { + var _a, copilotManagerUser; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: return [4 /*yield*/, projects_helper_1.ProjectsHelper.verifyProjectSearch(testData.searchProject)]; + case 1: + _b.sent(); + // Logout from current user. + return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; + case 2: + // Logout from current user. + _b.sent(); + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; + case 3: + _b.sent(); + _a = expect; + return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; + case 4: + _a.apply(void 0, [_b.sent()]).toBe(config_helper_1.ConfigHelper.getHomePageUrl()); + copilotManagerUser = config_helper_1.ConfigHelper.getCopilotUser(); + return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotManagerUser.email, copilotManagerUser.password)]; + case 5: + _b.sent(); + return [2 /*return*/]; + } + }); + }); }); + it('[TC_005] should verify user can switch between the Project tabs', function () { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, projects_helper_1.ProjectsHelper.verifySwitchTabs()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9wcm9qZWN0cy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQXFEO0FBQ3JELDhFQUE0RTtBQUM1RSxxR0FBbUc7QUFDbkcseURBQTJEO0FBQzNELDJEQUF5RDtBQUV6RCxRQUFRLENBQUMsbURBQW1ELEVBQUU7SUFDNUQ7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7O29CQUVGLFdBQVcsR0FBRyw0QkFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNsRCxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBQTs7b0JBQWpFLFNBQWlFLENBQUM7Ozs7U0FDbkUsQ0FBQyxDQUFDO0lBRUg7O09BRUc7SUFDSCxRQUFRLENBQUM7Ozt3QkFDUCxxQkFBTSw0QkFBWSxDQUFDLE1BQU0sRUFBRSxFQUFBOztvQkFBM0IsU0FBMkIsQ0FBQzs7OztTQUM3QixDQUFDLENBQUM7SUFFSCxVQUFVLENBQUM7Ozs7b0JBQ1QsZ0NBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFFNUIsNENBQTRDO29CQUM1QyxxQkFBTSxnQ0FBYyxDQUFDLElBQUksRUFBRSxFQUFBOztvQkFEM0IsNENBQTRDO29CQUM1QyxTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpRUFBaUUsRUFBRTs7O3dCQUNwRSxxQkFBTSxnQ0FBYyxDQUFDLHdCQUF3QixFQUFFLEVBQUE7O29CQUEvQyxTQUErQyxDQUFDOzs7O1NBQ2pELENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrRkFBK0YsRUFBRTs7Ozt3QkFDbEcscUJBQU0sZ0NBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUE7O29CQUFoRSxTQUFnRSxDQUFDO29CQUVqRSw0QkFBNEI7b0JBQzVCLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUQzQiw0QkFBNEI7b0JBQzVCLFNBQTJCLENBQUM7b0JBQzVCLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOztvQkFBL0IsU0FBK0IsQ0FBQztvQkFDaEMsS0FBQSxNQUFNLENBQUE7b0JBQUMscUJBQU0sb0NBQWEsQ0FBQyxhQUFhLEVBQUUsRUFBQTs7b0JBQTFDLGtCQUFPLFNBQW1DLEVBQUMsQ0FBQyxJQUFJLENBQzlDLDRCQUFZLENBQUMsY0FBYyxFQUFFLENBQzlCLENBQUM7b0JBRUksa0JBQWtCLEdBQUcsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDekQscUJBQU0sNEJBQVksQ0FBQyxLQUFLLENBQ3RCLGtCQUFrQixDQUFDLEtBQUssRUFDeEIsa0JBQWtCLENBQUMsUUFBUSxDQUM1QixFQUFBOztvQkFIRCxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUU7Ozt3QkFDcEUscUJBQU0sZ0NBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFBOztvQkFBdkMsU0FBdUMsQ0FBQzs7OztTQUN6QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/utils/config-helper.js b/connect-automation/temp/utils/config-helper.js new file mode 100644 index 000000000..73bf36f5b --- /dev/null +++ b/connect-automation/temp/utils/config-helper.js @@ -0,0 +1,97 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConfigHelper = void 0; +var config = require("../config/config.json"); +exports.ConfigHelper = { + /** + * Get current config + */ + getConfig: function () { + return config; + }, + /** + * Get login URL + */ + getLoginUrl: function () { + return this.getConfig().loginUrl; + }, + /** + * Get homepage URL + */ + getHomePageUrl: function () { + return this.getConfig().homePageUrl; + }, + /** + * Get Redirected login URL + */ + getRedirectLoginUrl: function () { + return this.getConfig().redirectLoginUrl; + }, + /** + * Get logout URL + */ + getLogoutUrl: function () { + return this.getConfig().logoutUrl; + }, + /** + * Get Username + */ + getUserName: function () { + return this.getConfig().username; + }, + /** + * Get Password + */ + getPassword: function () { + return this.getConfig().password; + }, + /** + * Get My Profile Page Url + */ + getMyProfileUrl: function () { + return this.getConfig().myProfileUrl; + }, + /** + * Get Notification Settings Page Url + */ + getNotificationSettingsUrl: function () { + return this.getConfig().notificationSettingsUrl; + }, + /** + * Get Account & Security Page Url + */ + getAccountAndSecurityUrl: function () { + return this.getConfig().accountAndSecurityUrl; + }, + /** + * Get Notification Settings Page Url + */ + getNotificationUrl: function () { + return this.getConfig().notificationsUrl; + }, + /** + * Get All Projects Page Url + */ + getAllProjectsUrl: function () { + return this.getConfig().allProjectsUrl; + }, + /** + * Gets email, password of customer user + */ + getCustomerUser: function () { + return this.getConfig().customerRole; + }, + /** + * Gets email, password of copilot user + */ + getCopilotUser: function () { + return this.getConfig().copilotRole; + }, + /** + * Gets email, password of copilot manager user + */ + getCopilotManagerUser: function () { + return this.getConfig().copilotManagerRole; + }, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3V0aWxzL2NvbmZpZy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQWdEO0FBRW5DLFFBQUEsWUFBWSxHQUFHO0lBQzFCOztPQUVHO0lBQ0gsU0FBUztRQUNQLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxFQUFkO1FBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQzdDLENBQUM7Q0FDRixDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/test-cases/_Connect Automation Smoke Test Plan.xlsx b/connect-automation/test-cases/_Connect Automation Smoke Test Plan.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1c84e05ce34bdd9a8c82cd6039d0eb879bdb6ba2 GIT binary patch literal 30305 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 literal 0 HcmV?d00001 diff --git a/connect-automation/test-cases/~$_Connect Automation Smoke Test Plan.xlsx b/connect-automation/test-cases/~$_Connect Automation Smoke Test Plan.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ad2f313c5791bf98661d9cc1d629e5c26bb5fc86 GIT binary patch literal 165 ucmd-M%gjzJRtQTi%1u-t9&j^+F=R4iGbAz;GbjMrsSHI7xj>!*O&|c { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in with Copilot role. + const copilotUser = ConfigHelper.getCopilotUser(); + await CommonHelper.login(copilotUser.email, copilotUser.password); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + CreateNewPhaseHelper.initialize(); + // Step Sequence #1: Go to the given app URL + await CommonHelper.goToRecentlyCreatedProject(); + }); + + it('[TC_001] should verify user can create a Phase and Publish it.', async () => { + await CreateNewPhaseHelper.verifyCreateNewPhase( + testData.phaseCreation.formData + ); + }); +}); diff --git a/connect-automation/test-suites/profile-update/footer-menu.spec.ts b/connect-automation/test-suites/profile-update/footer-menu.spec.ts new file mode 100644 index 000000000..57eba8d77 --- /dev/null +++ b/connect-automation/test-suites/profile-update/footer-menu.spec.ts @@ -0,0 +1,32 @@ +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import { FooterHelper } from '../../page-objects/profile-update/footer/footer.helper'; +import { ConfigHelper } from '../../utils/config-helper'; + +describe('Connect App - Footer Menu Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in. + await CommonHelper.login( + ConfigHelper.getUserName(), + ConfigHelper.getPassword() + ); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + // Initialize Footer Menu Helper + FooterHelper.initialize(); + }); + + it('[TC_006] should verify copyright year is displaying correctly.', async () => { + await FooterHelper.verifyCopyright(); + }); +}); diff --git a/connect-automation/test-suites/profile-update/left-menu.spec.ts b/connect-automation/test-suites/profile-update/left-menu.spec.ts new file mode 100644 index 000000000..631949e7a --- /dev/null +++ b/connect-automation/test-suites/profile-update/left-menu.spec.ts @@ -0,0 +1,38 @@ +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import { LeftMenuPageHelper } from '../../page-objects/profile-update/left-menu/left-menu.helper'; +import { ConfigHelper } from '../../utils/config-helper'; +import { MyProfilePageHelper } from '../../page-objects/profile-update/my-profile/my-profile.helper'; + +describe('Connect App - Left Menu Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in. + await CommonHelper.login( + ConfigHelper.getUserName(), + ConfigHelper.getPassword() + ); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + MyProfilePageHelper.initialize(); + LeftMenuPageHelper.initialize(); + await MyProfilePageHelper.open(); + }); + + it('[TC_004] should verify whether the user can navigate the page successfully.', async () => { + await LeftMenuPageHelper.verifyNotificationSettings(); + await LeftMenuPageHelper.verifyProfileInformation(); + await LeftMenuPageHelper.verifyAccountAndSecurity(); + await LeftMenuPageHelper.verifyAllProjects(); + await LeftMenuPageHelper.verifyNotifications(); + }); +}); diff --git a/connect-automation/test-suites/profile-update/my-profile.spec.ts b/connect-automation/test-suites/profile-update/my-profile.spec.ts new file mode 100644 index 000000000..ca237917f --- /dev/null +++ b/connect-automation/test-suites/profile-update/my-profile.spec.ts @@ -0,0 +1,41 @@ +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import * as testData from '../../test-data/test-data.json'; +import { ConfigHelper } from '../../utils/config-helper'; +import { MyProfilePageHelper } from '../../page-objects/profile-update/my-profile/my-profile.helper'; + +describe('Connect App - My Profile Page Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in. + await CommonHelper.login( + ConfigHelper.getUserName(), + ConfigHelper.getPassword() + ); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + MyProfilePageHelper.initialize(); + await MyProfilePageHelper.open(); + }); + + it('[TC_001] should verify whether the current user can update the basic information.', async () => { + await MyProfilePageHelper.verifyProfileInformation(testData.userProfile); + }); + + it('[TC_002] should verify whether the Business Phone/Country sync accordingly.', async () => { + await MyProfilePageHelper.verifyBusinessPhoneSync(testData.userProfile); + }); + + it('[TC_003] should verify whether the user can close the profile window.', async () => { + await MyProfilePageHelper.verifyUserCloseProfileWindow(); + }); +}); diff --git a/connect-automation/test-suites/profile-update/user-profile-menu.spec.ts b/connect-automation/test-suites/profile-update/user-profile-menu.spec.ts new file mode 100644 index 000000000..10f23e868 --- /dev/null +++ b/connect-automation/test-suites/profile-update/user-profile-menu.spec.ts @@ -0,0 +1,35 @@ +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import { UserProfileMenuHelper } from '../../page-objects/profile-update/user-profile-menu/user-profile-menu.helper'; +import { ConfigHelper } from '../../utils/config-helper'; + +describe('Connect App - User Profile Menu Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in. + await CommonHelper.login( + ConfigHelper.getUserName(), + ConfigHelper.getPassword() + ); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + // Initialize User Profile Menu Helper + UserProfileMenuHelper.initialize(); + }); + + it('[TC_005] should whether the user can navigate the page successfully from profile icon menu.', async () => { + await UserProfileMenuHelper.verifyMyProfile(); + await UserProfileMenuHelper.verifyNotificationSettings(); + await UserProfileMenuHelper.verifyAccountAndSecurity(); + await UserProfileMenuHelper.verifyLogout(); + }); +}); diff --git a/connect-automation/test-suites/project-creation-flow/create-project.spec.ts b/connect-automation/test-suites/project-creation-flow/create-project.spec.ts new file mode 100644 index 000000000..ae7228879 --- /dev/null +++ b/connect-automation/test-suites/project-creation-flow/create-project.spec.ts @@ -0,0 +1,32 @@ +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import { CreateProjectPageHelper } from '../../page-objects/project-creation-flow/create-project/create-project.helper'; +import * as testData from '../../test-data/test-data.json'; +import { ConfigHelper } from '../../utils/config-helper'; + +describe('Connect App - Create Project Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in with Customer Role. + const customerUser = ConfigHelper.getCustomerUser(); + await CommonHelper.login(customerUser.email, customerUser.password); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + CreateProjectPageHelper.initialize(); + // Step Sequence #1: Go to the given app URL + await CreateProjectPageHelper.open(); + }); + + it('[TC_001] should verify whether the current user can create a Design, Development & Deployment project', async () => { + await CreateProjectPageHelper.verifyProjectCreation(testData.projectData); + }); +}); diff --git a/connect-automation/test-suites/project-creation-flow/invite-copilot.spec.ts b/connect-automation/test-suites/project-creation-flow/invite-copilot.spec.ts new file mode 100644 index 000000000..bb6d5ad9e --- /dev/null +++ b/connect-automation/test-suites/project-creation-flow/invite-copilot.spec.ts @@ -0,0 +1,32 @@ +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import { InviteCopilotHelper } from '../../page-objects/project-creation-flow/invite-copilot/invite-copilot.helper'; +import * as testData from '../../test-data/test-data.json'; +import { ConfigHelper } from '../../utils/config-helper'; + +describe('Connect App - Invite Copilot Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in with Copilot Manager role. + const copilotManagerUser = ConfigHelper.getCopilotManagerUser(); + await CommonHelper.login(copilotManagerUser.email, copilotManagerUser.password); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + InviteCopilotHelper.initialize(); + // Step Sequence #1: Go to the given app URL + await InviteCopilotHelper.open(); + }); + + it('[TC_002] should verify whether the Copilot Manager can invite to project', async () => { + await InviteCopilotHelper.verifyManageProject(testData.inviteCopilot.copilotHandle); + }); +}); diff --git a/connect-automation/test-suites/project-creation-flow/projects.spec.ts b/connect-automation/test-suites/project-creation-flow/projects.spec.ts new file mode 100644 index 000000000..2dd49f251 --- /dev/null +++ b/connect-automation/test-suites/project-creation-flow/projects.spec.ts @@ -0,0 +1,55 @@ +import { BrowserHelper } from 'topcoder-testing-lib'; +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import { ProjectsHelper } from '../../page-objects/project-creation-flow/projects/projects.helper'; +import * as testData from '../../test-data/test-data.json'; +import { ConfigHelper } from '../../utils/config-helper'; + +describe('Connect App - Copilot Role Project Related Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in with Copilot Role. + const copilotUser = ConfigHelper.getCopilotUser(); + await CommonHelper.login(copilotUser.email, copilotUser.password); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + ProjectsHelper.initialize(); + + // Step Sequence #1: Go to the given app URL + await ProjectsHelper.open(); + }); + + it('[TC_003] should verify whether the Copilot can Join the project', async () => { + await ProjectsHelper.verifyCopilotProjectJoin(); + }); + + it('[TC_004] should verify user can search for projects using project name, user handle, ref code', async () => { + await ProjectsHelper.verifyProjectSearch(testData.searchProject); + + // Logout from current user. + await CommonHelper.logout(); + await BrowserHelper.sleep(5000); + expect(await BrowserHelper.getCurrentUrl()).toBe( + ConfigHelper.getHomePageUrl() + ); + // Login again to execute next test. + const copilotManagerUser = ConfigHelper.getCopilotUser(); + await CommonHelper.login( + copilotManagerUser.email, + copilotManagerUser.password + ); + }); + + it('[TC_005] should verify user can switch between the Project tabs', async () => { + await ProjectsHelper.verifySwitchTabs(); + }); +}); diff --git a/connect-automation/tsconfig.json b/connect-automation/tsconfig.json new file mode 100644 index 000000000..b8f26e010 --- /dev/null +++ b/connect-automation/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["es5", "es6", "dom"], + "plugins": [ + { + "name": "typescript-tslint-plugin", + "alwaysShowRuleFailuresAsWarnings": false, + "ignoreDefinitionFiles": true, + "configFile": "./tslint.json", + "suppressWhileTypeErrorsPresent": false + } + ], + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": false, + "inlineSourceMap": true, + "declaration": false, + "removeComments": false, + "noImplicitAny": false, + "outDir": "temp", + "types": ["jasmine", "node"], + "resolveJsonModule": true, + "skipLibCheck": true + }, + "exclude": ["node_modules"] +} diff --git a/connect-automation/tslint.json b/connect-automation/tslint.json new file mode 100644 index 000000000..f28b04eb3 --- /dev/null +++ b/connect-automation/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": ["tslint:latest", "tslint-config-prettier"] +} diff --git a/connect-automation/utils/config-helper.ts b/connect-automation/utils/config-helper.ts new file mode 100644 index 000000000..86bff4b2b --- /dev/null +++ b/connect-automation/utils/config-helper.ts @@ -0,0 +1,108 @@ +import * as config from '../config/config.json'; + +export const ConfigHelper = { + /** + * Get current config + */ + getConfig() { + return config; + }, + + /** + * Get login URL + */ + getLoginUrl() { + return this.getConfig().loginUrl; + }, + + /** + * Get homepage URL + */ + getHomePageUrl(): string { + return this.getConfig().homePageUrl; + }, + + /** + * Get Redirected login URL + */ + getRedirectLoginUrl() { + return this.getConfig().redirectLoginUrl; + }, + + /** + * Get logout URL + */ + getLogoutUrl() { + return this.getConfig().logoutUrl; + }, + + /** + * Get Username + */ + getUserName() { + return this.getConfig().username; + }, + + /** + * Get Password + */ + getPassword() { + return this.getConfig().password; + }, + + /** + * Get My Profile Page Url + */ + getMyProfileUrl() { + return this.getConfig().myProfileUrl; + }, + + /** + * Get Notification Settings Page Url + */ + getNotificationSettingsUrl() { + return this.getConfig().notificationSettingsUrl; + }, + + /** + * Get Account & Security Page Url + */ + getAccountAndSecurityUrl() { + return this.getConfig().accountAndSecurityUrl; + }, + + /** + * Get Notification Settings Page Url + */ + getNotificationUrl() { + return this.getConfig().notificationsUrl; + }, + + /** + * Get All Projects Page Url + */ + getAllProjectsUrl() { + return this.getConfig().allProjectsUrl; + }, + + /** + * Gets email, password of customer user + */ + getCustomerUser() { + return this.getConfig().customerRole; + }, + + /** + * Gets email, password of copilot user + */ + getCopilotUser() { + return this.getConfig().copilotRole; + }, + + /** + * Gets email, password of copilot manager user + */ + getCopilotManagerUser() { + return this.getConfig().copilotManagerRole; + }, +}; From afbad8e98153feead95449ca7f7f5ffc7c1a3620 Mon Sep 17 00:00:00 2001 From: Deepak Thapa Date: Mon, 31 May 2021 10:17:53 +0545 Subject: [PATCH 02/24] Remove unnecessary file --- connect-automation/temp/conf.js | 59 -- .../temp/config/app-config.json | 17 - connect-automation/temp/config/config.json | 26 - connect-automation/temp/logger/logger.js | 8 - .../page-objects/common-page/common.helper.js | 514 ------------------ .../temp/page-objects/login/login.helper.js | 114 ---- .../temp/page-objects/login/login.po.js | 176 ------ .../create-new-phase.helper.js | 220 -------- .../create-new-phase.model.js | 3 - .../create-new-phase/create-new-phase.po.js | 137 ----- .../profile-update/footer/footer.helper.js | 73 --- .../profile-update/footer/footer.po.js | 21 - .../left-menu/left-menu.helper.js | 177 ------ .../profile-update/left-menu/left-menu.po.js | 135 ----- .../my-profile/my-profile.helper.js | 449 --------------- .../my-profile/my-profile.model.js | 3 - .../my-profile/my-profile.po.js | 322 ----------- .../user-profile-menu.helper.js | 157 ------ .../user-profile-menu/user-profile-menu.po.js | 61 --- .../create-project/create-project.helper.js | 405 -------------- .../create-project/create-project.model.js | 3 - .../create-project/create-project.po.js | 252 --------- .../invite-copilot/invite-copilot.helper.js | 152 ------ .../invite-copilot/invite-copilot.po.js | 127 ----- .../projects/projects.helper.js | 333 ------------ .../projects/projects.model.js | 3 - .../projects/projects.po.js | 207 ------- .../temp/test-data/test-data.json | 46 -- .../create-new-phase.spec.js | 98 ---- .../profile-update/footer-menu.spec.js | 90 --- .../profile-update/left-menu.spec.js | 109 ---- .../profile-update/my-profile.spec.js | 116 ---- .../profile-update/user-profile-menu.spec.js | 99 ---- .../create-project.spec.js | 98 ---- .../invite-copilot.spec.js | 98 ---- .../project-creation-flow/projects.spec.js | 136 ----- .../temp/utils/config-helper.js | 97 ---- 37 files changed, 5141 deletions(-) delete mode 100644 connect-automation/temp/conf.js delete mode 100644 connect-automation/temp/config/app-config.json delete mode 100644 connect-automation/temp/config/config.json delete mode 100644 connect-automation/temp/logger/logger.js delete mode 100644 connect-automation/temp/page-objects/common-page/common.helper.js delete mode 100644 connect-automation/temp/page-objects/login/login.helper.js delete mode 100644 connect-automation/temp/page-objects/login/login.po.js delete mode 100644 connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js delete mode 100644 connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js delete mode 100644 connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js delete mode 100644 connect-automation/temp/page-objects/profile-update/footer/footer.helper.js delete mode 100644 connect-automation/temp/page-objects/profile-update/footer/footer.po.js delete mode 100644 connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js delete mode 100644 connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js delete mode 100644 connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js delete mode 100644 connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js delete mode 100644 connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js delete mode 100644 connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js delete mode 100644 connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js delete mode 100644 connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js delete mode 100644 connect-automation/temp/test-data/test-data.json delete mode 100644 connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js delete mode 100644 connect-automation/temp/test-suites/profile-update/footer-menu.spec.js delete mode 100644 connect-automation/temp/test-suites/profile-update/left-menu.spec.js delete mode 100644 connect-automation/temp/test-suites/profile-update/my-profile.spec.js delete mode 100644 connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js delete mode 100644 connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js delete mode 100644 connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js delete mode 100644 connect-automation/temp/test-suites/project-creation-flow/projects.spec.js delete mode 100644 connect-automation/temp/utils/config-helper.js diff --git a/connect-automation/temp/conf.js b/connect-automation/temp/conf.js deleted file mode 100644 index dace4b60f..000000000 --- a/connect-automation/temp/conf.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var reporters = require("jasmine-reporters"); -var HtmlReporter = require("protractor-beautiful-reporter"); -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -exports.config = { - directConnect: true, - // Capabilities to be passed to the webdriver instance. - capabilities: { - browserName: 'chrome', - chromeOptions: { - args: [ - '--headless', - '--disable-gpu', - '--no-sandbox', - '--window-size=1325x744', - ], - }, - }, - // Framework to use. Jasmine is recommended. - framework: 'jasmine2', - specs: [ - '../temp/test-suites/profile-update/my-profile.spec.js', - '../temp/test-suites/profile-update/left-menu.spec.js', - '../temp/test-suites/profile-update/user-profile-menu.spec.js', - '../temp/test-suites/profile-update/footer-menu.spec.js', - '../temp/test-suites/project-creation-flow/create-project.spec.js', - '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', - '../temp/test-suites/project-creation-flow/projects.spec.js', - '../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' - ], - // Options to be passed to Jasmine. - jasmineNodeOpts: { - defaultTimeoutInterval: 1200000, - isVerbose: true, - showColors: true, - }, - onPrepare: function () { - topcoder_testing_lib_1.BrowserHelper.maximize(); - topcoder_testing_lib_1.BrowserHelper.implicitlyWait(5000); - var junitReporter = new reporters.JUnitXmlReporter({ - consolidateAll: false, - savePath: 'test-results', - }); - jasmine.getEnv().addReporter(junitReporter); - jasmine.getEnv().addReporter(new HtmlReporter({ - baseDirectory: 'test-results', - docName: 'TestResult.html', - docTitle: 'Test Automation Execution Report', - gatherBrowserLogs: true, - jsonsSubfolder: 'jsons', - preserveDirectory: false, - screenshotsSubfolder: 'screenshots', - takeScreenShotsForSkippedSpecs: true, - takeScreenShotsOnlyForFailedSpecs: true, - }).getJasmine2Reporter()); - }, -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2NvbmYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBZ0Q7QUFDaEQsNERBQStEO0FBQy9ELDZEQUFxRDtBQWNyRCxPQUFPLENBQUMsTUFBTSxHQUFHO0lBQ2YsYUFBYSxFQUFFLElBQUk7SUFFbkIsdURBQXVEO0lBQ3ZELFlBQVksRUFBRTtRQUNaLFdBQVcsRUFBRSxRQUFRO1FBQ3JCLGFBQWEsRUFBRTtZQUNiLElBQUksRUFBRTtnQkFDSixZQUFZO2dCQUNaLGVBQWU7Z0JBQ2YsY0FBYztnQkFDZCx3QkFBd0I7YUFDekI7U0FDRjtLQUNGO0lBRUQsNENBQTRDO0lBQzVDLFNBQVMsRUFBRSxVQUFVO0lBRXJCLEtBQUssRUFBRTtRQUNMLHVEQUF1RDtRQUN2RCxzREFBc0Q7UUFDdEQsOERBQThEO1FBQzlELHdEQUF3RDtRQUN4RCxrRUFBa0U7UUFDbEUsa0VBQWtFO1FBQ2xFLDREQUE0RDtRQUM1RCxrRUFBa0U7S0FDbkU7SUFFRCxtQ0FBbUM7SUFDbkMsZUFBZSxFQUFFO1FBQ2Ysc0JBQXNCLEVBQUUsT0FBTztRQUMvQixTQUFTLEVBQUUsSUFBSTtRQUNmLFVBQVUsRUFBRSxJQUFJO0tBQ2pCO0lBRUQsU0FBUyxFQUFFO1FBQ1Qsb0NBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixvQ0FBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFNLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNuRCxjQUFjLEVBQUUsS0FBSztZQUNyQixRQUFRLEVBQUUsY0FBYztTQUN6QixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQzFCLElBQUksWUFBWSxDQUFDO1lBQ2YsYUFBYSxFQUFFLGNBQWM7WUFDN0IsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUsa0NBQWtDO1lBQzVDLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsY0FBYyxFQUFFLE9BQU87WUFDdkIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixvQkFBb0IsRUFBRSxhQUFhO1lBQ25DLDhCQUE4QixFQUFFLElBQUk7WUFDcEMsaUNBQWlDLEVBQUUsSUFBSTtTQUN4QyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FDekIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/config/app-config.json b/connect-automation/temp/config/app-config.json deleted file mode 100644 index 55caea2ec..000000000 --- a/connect-automation/temp/config/app-config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "Timeout": { - "FieldVisibility": 15000, - "ElementVisibility": 15000, - "ElementInvisibility": 15000, - "ElementPresence": 15000, - "ElementClickable": 15000, - "PageLoad": 300000 - }, - "LoggerErrors": { - "ElementVisibilty": "Element did not display within timeout", - "ElementInvisibilty": "Element did not become invisible within timeout", - "ElementPresence": "Element was not present within timeout", - "ElementClickable": "Element was not clickable within timeout", - "PageLoad": "Page did not load within timeout" - } -} diff --git a/connect-automation/temp/config/config.json b/connect-automation/temp/config/config.json deleted file mode 100644 index 975111d61..000000000 --- a/connect-automation/temp/config/config.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "env": "dev", - "username": "mailmemakar402", - "password": "P@ssw0rd", - "customerRole": { - "email": "topcoderconnect+Customer@gmail.com", - "password": "appirio123" - }, - "copilotRole": { - "email": "topcoderconnect+Copilot@gmail.com", - "password": "appirio123" - }, - "copilotManagerRole": { - "email": "topcoderconnect+CopilotManager@gmail.com", - "password": "appirio123" - }, - "homePageUrl": "https://connect.topcoder-dev.com/", - "loginUrl": "https://auth.topcoder-dev.com", - "redirectLoginUrl": "https://accounts-auth0.topcoder-dev.com/?regSource=tcBusiness&retUrl=https://connect.topcoder-dev.com", - "logoutUrl": "https://accounts-auth0.topcoder-dev.com/?logout=true&retUrl=https://connect.topcoder-dev.com", - "myProfileUrl": "https://connect.topcoder-dev.com/settings/profile", - "notificationSettingsUrl": "https://connect.topcoder-dev.com/settings/notifications", - "accountAndSecurityUrl": "https://connect.topcoder-dev.com/settings/account", - "notificationsUrl": "https://connect.topcoder-dev.com/notifications", - "allProjectsUrl": "https://connect.topcoder-dev.com/projects" -} diff --git a/connect-automation/temp/logger/logger.js b/connect-automation/temp/logger/logger.js deleted file mode 100644 index cba1edbb1..000000000 --- a/connect-automation/temp/logger/logger.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.logger = void 0; -var winston_1 = require("winston"); -exports.logger = winston_1.createLogger({ - transports: [new winston_1.transports.Console()] -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbG9nZ2VyL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUQ7QUFDdEMsUUFBQSxNQUFNLEdBQUcsc0JBQVksQ0FBQztJQUNqQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLG9CQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Q0FDdkMsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/page-objects/common-page/common.helper.js b/connect-automation/temp/page-objects/common-page/common.helper.js deleted file mode 100644 index 62d59cfa6..000000000 --- a/connect-automation/temp/page-objects/common-page/common.helper.js +++ /dev/null @@ -1,514 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CommonHelper = void 0; -var moment = require("moment"); -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var appconfig = require("../../config/app-config.json"); -var logger_1 = require("../../logger/logger"); -var config_helper_1 = require("../../utils/config-helper"); -var login_helper_1 = require("../login/login.helper"); -/** - * Wait until condition return true - * @param func function for checking condition - * @param extraMessage extra error message when timeout - * @param isPageLoad wait for loading page - */ -var waitUntil = function (func, extraMessage, isPageLoad) { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntil(func, isPageLoad - ? appconfig.Timeout.PageLoad - : appconfig.Timeout.ElementVisibility, (isPageLoad - ? appconfig.LoggerErrors.PageLoad - : appconfig.LoggerErrors.ElementVisibilty) + - '.' + - extraMessage)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); -}); }; -exports.CommonHelper = { - /** - * Log in browser - * @param username user name - * @param password password - */ - login: function (username, password) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.initialize()]; - case 1: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.maximize()]; - case 2: - _a.sent(); - return [4 /*yield*/, login_helper_1.LoginPageHelper.open()]; - case 3: - _a.sent(); - return [4 /*yield*/, login_helper_1.LoginPageHelper.login(username, password)]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Log out browser - */ - logout: function () { - return __awaiter(this, void 0, void 0, function () { - var e_1; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - _a.trys.push([0, 2, , 4]); - return [4 /*yield*/, login_helper_1.LoginPageHelper.logout()]; - case 1: - _a.sent(); - return [3 /*break*/, 4]; - case 2: - e_1 = _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.restart()]; - case 3: - _a.sent(); - return [3 /*break*/, 4]; - case 4: return [2 /*return*/]; - } - }); - }); - }, - /** - * Wait until the element becomes visible - * @param {TcElementImpl} tcElement element - * @param {TcElementImpl} extraMessage extra message - * @param {Boolean} isPageLoad is loading page - */ - waitUntilVisibilityOf: function (func, extraMessage, isPageLoad) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, waitUntil(function () { return function () { return __awaiter(_this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 2, , 3]); - return [4 /*yield*/, func().isDisplayed()]; - case 1: return [2 /*return*/, _b.sent()]; - case 2: - _a = _b.sent(); - // element is not attached to the DOM of a page. - return [2 /*return*/, false]; - case 3: return [2 /*return*/]; - } - }); - }); }; }, extraMessage, isPageLoad)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Wait until the element is present - * @param {TcElementImpl} tcElement element - * @param {TcElementImpl} extraMessage extra message - * @param {Boolean} isPageLoad is loading page - */ - waitUntilPresenceOf: function (func, extraMessage, isPageLoad) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntil(function () { return function () { return __awaiter(_this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 2, , 3]); - return [4 /*yield*/, func().isPresent()]; - case 1: return [2 /*return*/, _b.sent()]; - case 2: - _a = _b.sent(); - // element is not attached to the DOM of a page. - return [2 /*return*/, false]; - case 3: return [2 /*return*/]; - } - }); - }); }; }, isPageLoad - ? appconfig.Timeout.PageLoad - : appconfig.Timeout.ElementPresence, (isPageLoad - ? appconfig.LoggerErrors.PageLoad - : appconfig.LoggerErrors.ElementPresence) + - '.' + - extraMessage)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Wait for Page to be displayed - */ - waitForPageDisplayed: function () { - return __awaiter(this, void 0, void 0, function () { - var rootId; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - rootId = topcoder_testing_lib_1.ElementHelper.getElementById('root'); - return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return rootId; }, 'Wait for home page', true)]; - case 1: - _a.sent(); - return [2 /*return*/, rootId]; - } - }); - }); - }, - /** - * Fill Input Field with value - * @param el target element - * @param value value to fill - */ - fillInputField: function (el, value) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - el.click(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(100)]; - case 1: - _a.sent(); - el.clear(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(100)]; - case 2: - _a.sent(); - el.sendKeys(value); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Select input by its containing text - * @param text desired text value - */ - selectInputByContainingText: function (text) { - return __awaiter(this, void 0, void 0, function () { - var selectedOption; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - selectedOption = topcoder_testing_lib_1.ElementHelper.getElementContainingText(text); - return [4 /*yield*/, selectedOption.click()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Get element that contain text - * @param tag tag - * @param text text contain - * @param parent parent element - */ - findElementByText: function (tag, text, parent) { - return topcoder_testing_lib_1.ElementHelper.getElementByXPath('//' + tag + '[contains(text(), "' + text + '")]', parent); - }, - /** - * Find desired value from dropdown menu - * @param text search value - * @param parent (optional) parent element - */ - findTextFromDropDown: function (text, parent) { - return __awaiter(this, void 0, void 0, function () { - var xpath, dropDowns; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - xpath = "//div[contains(text(), \"" + text + "\")]"; - return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath, parent)]; - case 1: - dropDowns = _a.sent(); - return [2 /*return*/, dropDowns]; - } - }); - }); - }, - /** - * Compare given url to current page's url - * @param url expected page url - */ - verifyPageUrl: function (url) { - return __awaiter(this, void 0, void 0, function () { - var currentUrl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; - case 1: - currentUrl = _a.sent(); - expect(currentUrl).toContain(url); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Navigate to All Projects Page - */ - navigateToAllProjectsPage: function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getAllProjectsUrl())]; - case 1: - _a.sent(); - return [4 /*yield*/, exports.CommonHelper.waitForPageDisplayed()]; - case 2: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Append date time to given input text - * @param inputText input text - */ - appendDate: function (inputText) { - return inputText + "-" + moment().format(); - }, - /** - * Get Project Title - */ - projectTitle: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_1Iqc2q'); - }, - /** - * Get Page Title - */ - pageTitle: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('TopBarContainer'); - }, - /** - * Get Loading Indicator - */ - loadingIndicator: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('loading-indicator'); - }, - /** - * Wait for project title to appear - */ - waitForProjectTitle: function () { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return _this.projectTitle(); }, 'Wait for project title', true)]; - case 1: - _a.sent(); - logger_1.logger.info('My Project Page Loaded'); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Wait for page title to appear - */ - waitForPageTitle: function () { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return _this.pageTitle(); }, 'Wait for project title', true)]; - case 1: - _a.sent(); - logger_1.logger.info('Home Page Loaded'); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Get recent project title element - * @param isCustomer true if current logged in user had customer role - */ - firstProject: function (isCustomer) { - if (isCustomer === void 0) { isCustomer = false; } - return __awaiter(this, void 0, void 0, function () { - var projectClassName, titles; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - projectClassName = isCustomer ? 'project-header-details' : 'project-title'; - return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName(projectClassName)]; - case 1: - titles = _a.sent(); - return [2 /*return*/, titles[0]]; - } - }); - }); - }, - /** - * Navigate to first Project From Dashboard - * @param isCustomer true if current logged in user had customer role - */ - goToRecentlyCreatedProject: function (isCustomer) { - if (isCustomer === void 0) { isCustomer = false; } - return __awaiter(this, void 0, void 0, function () { - var _a, _b, title; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(40000)]; - case 1: - _c.sent(); - _b = (_a = topcoder_testing_lib_1.BrowserHelper).waitUntilVisibilityOf; - return [4 /*yield*/, this.firstProject(isCustomer)]; - case 2: return [4 /*yield*/, _b.apply(_a, [_c.sent()])]; - case 3: - _c.sent(); - return [4 /*yield*/, this.firstProject(isCustomer)]; - case 4: - title = _c.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilClickableOf(title)]; - case 5: - _c.sent(); - return [4 /*yield*/, title.click()]; - case 6: - _c.sent(); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Get Alert Box Element - */ - alertBox: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('s-alert-box-inner'); - }, - /** - * Get Success Alert Span - */ - successAlert: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByTag('span', this.alertBox()); - }, - /** - * Wait for success alert to show - */ - waitForSuccessAlert: function (target) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, exports.CommonHelper.waitUntilVisibilityOf(function () { return target; }, 'Wait for success alert message', true)]; - case 1: - _a.sent(); - logger_1.logger.info('Success Alert Displayed'); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Wait until element visibility and click - */ - waitAndClickElement: function (targetEl) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilVisibilityOf(targetEl)]; - case 1: - _a.sent(); - return [4 /*yield*/, targetEl.click()]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Verify success alert shows correct message - * @param expectedText expected success text to appear - */ - verifySuccessAlert: function (expectedText) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.waitForSuccessAlert(this.alertBox())]; - case 1: - _b.sent(); - _a = expect; - return [4 /*yield*/, this.successAlert().getText()]; - case 2: - _a.apply(void 0, [_b.sent()]).toBe(expectedText); - return [2 /*return*/]; - } - }); - }); - }, - /** - * Necessary input format for calendar input - */ - dateFormat: function () { - return '00YYYYMMDD'; - }, - /** - * Get Create Phase Page title - */ - get createPhasePageTitle() { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_2edGvU'); - }, -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9jb21tb24tcGFnZS9jb21tb24uaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFrQztBQUVsQyw2REFBb0U7QUFDcEUsd0RBQTBEO0FBQzFELDhDQUE2QztBQUc3QywyREFBeUQ7QUFDekQsc0RBQXdEO0FBRXhEOzs7OztHQUtHO0FBQ0gsSUFBTSxTQUFTLEdBQUcsVUFDaEIsSUFBZSxFQUNmLFlBQW9CLEVBQ3BCLFVBQW1COzs7b0JBRW5CLHFCQUFNLG9DQUFhLENBQUMsU0FBUyxDQUMzQixJQUFJLEVBQ0osVUFBVTtvQkFDUixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRO29CQUM1QixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFDdkMsQ0FBQyxVQUFVO29CQUNULENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVE7b0JBQ2pDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO29CQUMxQyxHQUFHO29CQUNILFlBQVksQ0FDZixFQUFBOztnQkFWRCxTQVVDLENBQUM7Ozs7S0FDSCxDQUFDO0FBRVcsUUFBQSxZQUFZLEdBQUc7SUFDMUI7Ozs7T0FJRztJQUNHLEtBQUssRUFBWCxVQUFZLFFBQWdCLEVBQUUsUUFBZ0I7Ozs7NEJBQzVDLHFCQUFNLG9DQUFhLENBQUMsVUFBVSxFQUFFLEVBQUE7O3dCQUFoQyxTQUFnQyxDQUFDO3dCQUNqQyxxQkFBTSxvQ0FBYSxDQUFDLFFBQVEsRUFBRSxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFFL0IscUJBQU0sOEJBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQTVCLFNBQTRCLENBQUM7d0JBQzdCLHFCQUFNLDhCQUFl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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/login/login.helper.js b/connect-automation/temp/page-objects/login/login.helper.js deleted file mode 100644 index 7296ec36d..000000000 --- a/connect-automation/temp/page-objects/login/login.helper.js +++ /dev/null @@ -1,114 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LoginPageHelper = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var common_helper_1 = require("../common-page/common.helper"); -var login_po_1 = require("./login.po"); -var LoginPageHelper = /** @class */ (function () { - function LoginPageHelper() { - } - /** - * Set the page object - * @param loginPage login Page - */ - LoginPageHelper.setLoginPage = function (loginPage) { - this.loginPageObject = loginPage; - }; - /** - * Open page - */ - LoginPageHelper.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.loginPageObject = new login_po_1.LoginPage(); - return [4 /*yield*/, this.loginPageObject.open()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Login - * @param {String} username - * @param {String} password - */ - LoginPageHelper.login = function (username, password) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.loginPageObject.waitForLoginForm()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.loginPageObject.fillLoginForm(username, password)]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Logout - */ - LoginPageHelper.logout = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.loginPageObject.logout()]; - case 1: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - return LoginPageHelper; -}()); -exports.LoginPageHelper = LoginPageHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFnZS1vYmplY3RzL2xvZ2luL2xvZ2luLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBcUQ7QUFDckQsOERBQTREO0FBQzVELHVDQUF1QztBQUV2QztJQUFBO0lBcUNBLENBQUM7SUFwQ0M7OztPQUdHO0lBQ1csNEJBQVksR0FBMUIsVUFBMkIsU0FBb0I7UUFDN0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ2lCLG9CQUFJLEdBQXhCOzs7Ozt3QkFDRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksb0JBQVMsRUFBRSxDQUFDO3dCQUN2QyxxQkFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFBOzt3QkFBakMsU0FBaUMsQ0FBQzs7Ozs7S0FDbkM7SUFFRDs7OztPQUlHO0lBQ2lCLHFCQUFLLEdBQXpCLFVBQTBCLFFBQWdCLEVBQUUsUUFBZ0I7Ozs7NEJBQzFELHFCQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsRUFBQTs7d0JBQTdDLFNBQTZDLENBQUM7d0JBQzlDLHFCQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBQTs7d0JBQTVELFNBQTRELENBQUM7d0JBQzdELHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7Ozs7O0tBQzNDO0lBRUQ7O09BRUc7SUFDaUIsc0JBQU0sR0FBMUI7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBQTs7d0JBQW5DLFNBQW1DLENBQUM7d0JBQ3BDLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFHSCxzQkFBQztBQUFELENBQUMsQUFyQ0QsSUFxQ0M7QUFyQ1ksMENBQWUifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/login/login.po.js b/connect-automation/temp/page-objects/login/login.po.js deleted file mode 100644 index 627bb29e1..000000000 --- a/connect-automation/temp/page-objects/login/login.po.js +++ /dev/null @@ -1,176 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LoginPage = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var appconfig = require("../../config/app-config.json"); -var logger_1 = require("../../logger/logger"); -var config_helper_1 = require("../../utils/config-helper"); -var common_helper_1 = require("../common-page/common.helper"); -var LoginPage = /** @class */ (function () { - function LoginPage() { - } - /** - * Get login page - */ - LoginPage.prototype.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getRedirectLoginUrl())]; - case 1: - _a.sent(); - logger_1.logger.info('User navigated to Topcoder Login Page'); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Logout the user - */ - LoginPage.prototype.logout = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getLogoutUrl())]; - case 1: - _a.sent(); - logger_1.logger.info('user logged out'); - return [2 /*return*/]; - } - }); - }); - }; - Object.defineProperty(LoginPage.prototype, "userNameField", { - /** - * Get Username field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('username'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LoginPage.prototype, "passwordField", { - /** - * Get Password field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('password'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LoginPage.prototype, "loginButton", { - /** - * Get Login button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByCss("button[type = 'submit']"); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LoginPage.prototype, "loginForm", { - /** - * Get login form - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('auth0-lock-widget'); - }, - enumerable: false, - configurable: true - }); - /** - * Wait for the login form to be displayed - */ - LoginPage.prototype.waitForLoginForm = function () { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // Wait until login form appears - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(8000)]; - case 1: - // Wait until login form appears - _a.sent(); - common_helper_1.CommonHelper.waitUntilVisibilityOf(function () { return _this.loginForm; }, 'Wait for login form', true); - logger_1.logger.info('Login Form Displayed'); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Fill and submit the login form - */ - LoginPage.prototype.fillLoginForm = function (username, password) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.waitUntilPresenceOf(function () { return _this.userNameField; }, 'wait for username field', false)]; - case 1: - _a.sent(); - return [4 /*yield*/, this.userNameField.sendKeys(username)]; - case 2: - _a.sent(); - return [4 /*yield*/, this.passwordField.sendKeys(password)]; - case 3: - _a.sent(); - logger_1.logger.info('Login form filled with values: username - ' + - username + - ', password - FILTERED'); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilClickableOf(this.loginButton, appconfig.Timeout.ElementClickable, appconfig.LoggerErrors.ElementClickable)]; - case 4: - _a.sent(); - return [4 /*yield*/, this.loginButton.click()]; - case 5: - _a.sent(); - logger_1.logger.info('Submitted login form'); - return [2 /*return*/]; - } - }); - }); - }; - return LoginPage; -}()); -exports.LoginPage = LoginPage; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWdlLW9iamVjdHMvbG9naW4vbG9naW4ucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQW9FO0FBQ3BFLHdEQUEwRDtBQUMxRCw4Q0FBNkM7QUFDN0MsMkRBQXlEO0FBQ3pELDhEQUE0RDtBQUU1RDtJQUFBO0lBbUZBLENBQUM7SUFsRkM7O09BRUc7SUFDVSx3QkFBSSxHQUFqQjs7Ozs0QkFDRSxxQkFBTSxvQ0FBYSxDQUFDLElBQUksQ0FBQyw0QkFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBQTs7d0JBQTVELFNBQTRELENBQUM7d0JBQzdELGVBQU0sQ0FBQyxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQzs7Ozs7S0FDdEQ7SUFFRDs7T0FFRztJQUNVLDBCQUFNLEdBQW5COzs7OzRCQUNFLHFCQUFNLG9DQUFhLENBQUMsSUFBSSxDQUFDLDRCQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBQTs7d0JBQXJELFNBQXFELENBQUM7d0JBQ3RELGVBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzs7Ozs7S0FDaEM7SUFLRCxzQkFBVyxvQ0FBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsb0NBQWE7UUFIeEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLGtDQUFXO1FBSHRCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDbEUsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxnQ0FBUztRQUhwQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEUsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLG9DQUFnQixHQUE3Qjs7Ozs7O29CQUNFLGdDQUFnQztvQkFDaEMscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUQvQixnQ0FBZ0M7d0JBQ2hDLFNBQStCLENBQUM7d0JBQ2hDLDRCQUFZLENBQUMscUJBQXFCLENBQ2hDLGNBQU0sT0FBQSxLQUFJLENBQUMsU0FBUyxFQUFkLENBQWMsRUFDcEIscUJBQXFCLEVBQ3JCLElBQUksQ0FDTCxDQUFDO3dCQUNGLGVBQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7Ozs7S0FDckM7SUFFRDs7T0FFRztJQUNVLGlDQUFhLEdBQTFCLFVBQTJCLFFBQVEsRUFBRSxRQUFROzs7Ozs0QkFDM0MscUJBQU0sNEJBQVksQ0FBQyxtQkFBbUIsQ0FDcEMsY0FBTSxPQUFBLEtBQUksQ0FBQyxhQUFhLEVBQWxCLENBQWtCLEVBQ3hCLHlCQUF5QixFQUN6QixLQUFLLENBQ04sRUFBQTs7d0JBSkQsU0FJQyxDQUFDO3dCQUNGLHFCQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFBOzt3QkFBM0MsU0FBMkMsQ0FBQzt3QkFDNUMscUJBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUE7O3dCQUEzQyxTQUEyQyxDQUFDO3dCQUM1QyxlQUFNLENBQUMsSUFBSSxDQUNULDRDQUE0Qzs0QkFDMUMsUUFBUTs0QkFDUix1QkFBdUIsQ0FDMUIsQ0FBQzt3QkFDRixxQkFBTSxvQ0FBYSxDQUFDLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsV0FBVyxFQUNoQixTQUFTLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUNsQyxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUN4QyxFQUFBOzt3QkFKRCxTQUlDLENBQUM7d0JBQ0YscUJBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQTlCLFNBQThCLENBQUM7d0JBQy9CLGVBQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7Ozs7S0FDckM7SUFDSCxnQkFBQztBQUFELENBQUMsQUFuRkQsSUFtRkM7QUFuRlksOEJBQVMifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js deleted file mode 100644 index 3a3285acd..000000000 --- a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.js +++ /dev/null @@ -1,220 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CreateNewPhaseHelper = void 0; -var moment = require("moment"); -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var logger_1 = require("../../../logger/logger"); -var common_helper_1 = require("../../common-page/common.helper"); -var create_new_phase_po_1 = require("./create-new-phase.po"); -var CreateNewPhaseHelper = /** @class */ (function () { - function CreateNewPhaseHelper() { - } - /** - * Initialize Create New Phase page object - */ - CreateNewPhaseHelper.initialize = function () { - this.createNewPhasePageObject = new create_new_phase_po_1.CreateNewPhasePageObject(); - }; - /** - * Verify whether user can create a phase and publish it. - * @param formData phase creation form data defined in test data - */ - CreateNewPhaseHelper.verifyCreateNewPhase = function (formData) { - return __awaiter(this, void 0, void 0, function () { - var alertElement, _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.clickOnAddNewPhaseButton()]; - case 1: - _b.sent(); - return [4 /*yield*/, this.fillCreatePhaseForm(formData.title, formData.daysBetweenStartAndEndDate)]; - case 2: - _b.sent(); - // Fill report form - return [4 /*yield*/, this.fillMilestoneForm(0, formData.reportName)]; - case 3: - // Fill report form - _b.sent(); - return [4 /*yield*/, this.createNewPhasePageObject.addMilestoneButton.click()]; - case 4: - _b.sent(); - // Fill deliverable review form - return [4 /*yield*/, this.fillMilestoneForm(1, formData.deliverableReviewName, 'Deliverable Review')]; - case 5: - // Fill deliverable review form - _b.sent(); - return [4 /*yield*/, this.createNewPhasePageObject.addMilestoneButton.click()]; - case 6: - _b.sent(); - // Fill final deliverable review form - return [4 /*yield*/, this.fillMilestoneForm(2, formData.finalDeliverableReviewName, 'Final Deliverable Review')]; - case 7: - // Fill final deliverable review form - _b.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(3000)]; - case 8: - _b.sent(); - return [4 /*yield*/, this.createNewPhasePageObject.publishButton.click()]; - case 9: - _b.sent(); - alertElement = common_helper_1.CommonHelper.alertBox(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; - case 10: - _b.sent(); - _a = expect; - return [4 /*yield*/, common_helper_1.CommonHelper.successAlert().getText()]; - case 11: - _a.apply(void 0, [_b.sent()]).toBe("PROJECT PHASE CREATED."); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Click Add New Phase button, verify phase creation screen appearance - */ - CreateNewPhaseHelper.clickOnAddNewPhaseButton = function () { - return __awaiter(this, void 0, void 0, function () { - var newPhaseFormElement; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilClickableOf(this.createNewPhasePageObject.addNewPhaseButton)]; - case 1: - _a.sent(); - return [4 /*yield*/, this.createNewPhasePageObject.addNewPhaseButton.click()]; - case 2: - _a.sent(); - newPhaseFormElement = this.createNewPhasePageObject.phaseCreationForm; - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilPresenceOf(newPhaseFormElement)]; - case 3: - _a.sent(); - expect(newPhaseFormElement).toBeDefined(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Put the phase name, start date and end date to phase creation form - * @param title form phase name - * @param daysBetweenStartAndEndDate number of days between start and end date. default to 3 days. - */ - CreateNewPhaseHelper.fillCreatePhaseForm = function (title, daysBetweenStartAndEndDate) { - if (daysBetweenStartAndEndDate === void 0) { daysBetweenStartAndEndDate = 3; } - return __awaiter(this, void 0, void 0, function () { - var titleWithDate, startDate, endDate; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - titleWithDate = common_helper_1.CommonHelper.appendDate(title); - return [4 /*yield*/, this.createNewPhasePageObject.titleInput.sendKeys(titleWithDate)]; - case 1: - _a.sent(); - logger_1.logger.info("Filled title field with: " + titleWithDate); - startDate = moment().format(common_helper_1.CommonHelper.dateFormat()); - return [4 /*yield*/, this.createNewPhasePageObject.startDateInput().sendKeys(startDate)]; - case 2: - _a.sent(); - logger_1.logger.info("Filled start date field with: " + startDate.slice(2)); - endDate = moment().add(daysBetweenStartAndEndDate, 'days').format(common_helper_1.CommonHelper.dateFormat()); - return [4 /*yield*/, this.createNewPhasePageObject.endDateInput().sendKeys(endDate)]; - case 3: - _a.sent(); - logger_1.logger.info("Filled end date field with: " + endDate.slice(2)); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Create and Fill milestone form - * @param appendix numeric indicator of added milestone form - * @param name name field - * @param type type field - */ - CreateNewPhaseHelper.fillMilestoneForm = function (appendix, name, type) { - return __awaiter(this, void 0, void 0, function () { - var types, nameInput, startDate, endDate; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(3000)]; - case 1: - _a.sent(); - if (!type) return [3 /*break*/, 6]; - return [4 /*yield*/, this.createNewPhasePageObject.allTypeInput()]; - case 2: - types = _a.sent(); - return [4 /*yield*/, types[appendix].click()]; - case 3: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(500)]; - case 4: - _a.sent(); - return [4 /*yield*/, this.createNewPhasePageObject.getOptionFromTypeDropdown(type).click()]; - case 5: - _a.sent(); - _a.label = 6; - case 6: - nameInput = this.createNewPhasePageObject.nameInput(appendix.toString()); - return [4 /*yield*/, nameInput.clear()]; - case 7: - _a.sent(); - return [4 /*yield*/, nameInput.sendKeys(name)]; - case 8: - _a.sent(); - logger_1.logger.info("Filled name field with: " + name); - startDate = moment().format(common_helper_1.CommonHelper.dateFormat()); - return [4 /*yield*/, this.createNewPhasePageObject.startDateInput(appendix.toString()).sendKeys(startDate)]; - case 9: - _a.sent(); - logger_1.logger.info("Filled start date field with: " + startDate.slice(2)); - endDate = moment().add(1, 'days').format(common_helper_1.CommonHelper.dateFormat()); - return [4 /*yield*/, this.createNewPhasePageObject.endDateInput(appendix.toString()).sendKeys(endDate)]; - case 10: - _a.sent(); - logger_1.logger.info("Filled end date field with: " + endDate.slice(2)); - return [2 /*return*/]; - } - }); - }); - }; - return CreateNewPhaseHelper; -}()); -exports.CreateNewPhaseHelper = CreateNewPhaseHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcGhhc2UtY3JlYXRpb24tZmxvdy9jcmVhdGUtbmV3LXBoYXNlL2NyZWF0ZS1uZXctcGhhc2UuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFpQztBQUVqQyw2REFBcUQ7QUFDckQsaURBQWdEO0FBQ2hELGlFQUErRDtBQUUvRCw2REFBaUU7QUFFakU7SUFBQTtJQW9HQSxDQUFDO0lBbkdDOztPQUVHO0lBQ1csK0JBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSw4Q0FBd0IsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDaUIseUNBQW9CLEdBQXhDLFVBQXlDLFFBQTRCOzs7Ozs0QkFDbkUscUJBQU0sSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUE7O3dCQUFyQyxTQUFxQyxDQUFDO3dCQUN0QyxxQkFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsMEJBQTBCLENBQUMsRUFBQTs7d0JBQW5GLFNBQW1GLENBQUM7d0JBQ3BGLG1CQUFtQjt3QkFDbkIscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUE7O3dCQURwRCxtQkFBbUI7d0JBQ25CLFNBQW9ELENBQUM7d0JBQ3JELHFCQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQTlELFNBQThELENBQUM7d0JBQy9ELCtCQUErQjt3QkFDL0IscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMscUJBQXFCLEVBQUUsb0JBQW9CLENB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js deleted file mode 100644 index 92a503c04..000000000 --- a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.model.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9waGFzZS1jcmVhdGlvbi1mbG93L2NyZWF0ZS1uZXctcGhhc2UvY3JlYXRlLW5ldy1waGFzZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js b/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js deleted file mode 100644 index f341a495e..000000000 --- a/connect-automation/temp/page-objects/phase-creation-flow/create-new-phase/create-new-phase.po.js +++ /dev/null @@ -1,137 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CreateNewPhasePageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var CreateNewPhasePageObject = /** @class */ (function () { - function CreateNewPhasePageObject() { - } - Object.defineProperty(CreateNewPhasePageObject.prototype, "addNewPhaseButton", { - /** - * Get Add New Phase Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Add New Phase'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateNewPhasePageObject.prototype, "phaseCreationForm", { - /** - * Get Project Creation Form - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_1jLI3q'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateNewPhasePageObject.prototype, "titleInput", { - /** - * Get title input - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('title'); - }, - enumerable: false, - configurable: true - }); - /** - * Get name input - * @param appendix numeric indicator of added milestone form - */ - CreateNewPhasePageObject.prototype.nameInput = function (appendix) { - return topcoder_testing_lib_1.ElementHelper.getElementByName("name_" + appendix); - }; - /** - * Get start date input - * @param appendix numeric indicator of added milestone form - */ - CreateNewPhasePageObject.prototype.startDateInput = function (appendix) { - var inputName = appendix ? "startDate_" + appendix : 'startDate'; - return topcoder_testing_lib_1.ElementHelper.getElementByName(inputName); - }; - /** - * Get end date input - * @param appendix numeric indicator of added milestone form - */ - CreateNewPhasePageObject.prototype.endDateInput = function (appendix) { - var inputName = appendix ? "endDate_" + appendix : 'endDate'; - return topcoder_testing_lib_1.ElementHelper.getElementByName(inputName); - }; - /** - * Get Type Input - */ - CreateNewPhasePageObject.prototype.allTypeInput = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('react-select-container')]; - }); - }); - }; - /** - * Select option from type field dropdown - * @param option desired option - */ - CreateNewPhasePageObject.prototype.getOptionFromTypeDropdown = function (option) { - return topcoder_testing_lib_1.ElementHelper.getElementByCssContainingText('.react-select__option', option); - }; - Object.defineProperty(CreateNewPhasePageObject.prototype, "addMilestoneButton", { - /** - * Get Add Milestone Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Add Milestone'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateNewPhasePageObject.prototype, "publishButton", { - /** - * Get Publish Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Publish'); - }, - enumerable: false, - configurable: true - }); - return CreateNewPhasePageObject; -}()); -exports.CreateNewPhasePageObject = CreateNewPhasePageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5wby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9waGFzZS1jcmVhdGlvbi1mbG93L2NyZWF0ZS1uZXctcGhhc2UvY3JlYXRlLW5ldy1waGFzZS5wby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBcUQ7QUFDckQ7SUFBQTtJQTRFQSxDQUFDO0lBeEVDLHNCQUFXLHVEQUFpQjtRQUg1Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsdURBQWlCO1FBSDVCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxnREFBVTtRQUhyQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7OztPQUFBO0lBRUQ7OztPQUdHO0lBQ0ksNENBQVMsR0FBaEIsVUFBaUIsUUFBaUI7UUFDaEMsT0FBTyxvQ0FBYSxDQUFDLGdCQUFnQixDQUFDLFVBQVEsUUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGlEQUFjLEdBQXJCLFVBQXNCLFFBQWlCO1FBQ3JDLElBQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBYSxRQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNuRSxPQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLCtDQUFZLEdBQW5CLFVBQW9CLFFBQWlCO1FBQ25DLElBQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBVyxRQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvRCxPQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ1UsK0NBQVksR0FBekI7OztnQkFDRSxzQkFBTyxvQ0FBYSxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixDQUFDLEVBQUM7OztLQUMxRTtJQUVEOzs7T0FHRztJQUNJLDREQUF5QixHQUFoQyxVQUFpQyxNQUFjO1FBQzdDLE9BQU8sb0NBQWEsQ0FBQyw2QkFBNkIsQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBS0Qsc0JBQVcsd0RBQWtCO1FBSDdCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0QsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxtREFBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7OztPQUFBO0lBQ0gsK0JBQUM7QUFBRCxDQUFDLEFBNUVELElBNEVDO0FBNUVZLDREQUF3QiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/footer/footer.helper.js b/connect-automation/temp/page-objects/profile-update/footer/footer.helper.js deleted file mode 100644 index 8c0f0bd2d..000000000 --- a/connect-automation/temp/page-objects/profile-update/footer/footer.helper.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FooterHelper = void 0; -var footer_po_1 = require("./footer.po"); -var FooterHelper = /** @class */ (function () { - function FooterHelper() { - } - /** - * Initialize Footer Page Object - */ - FooterHelper.initialize = function () { - this.footerPageObject = new footer_po_1.FooterPageObject(); - }; - /** - * Verify whether copyright year is displayed correctly. - */ - FooterHelper.verifyCopyright = function () { - return __awaiter(this, void 0, void 0, function () { - var footerText, footerTextArray, displayedYear, expectedYear; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.footerPageObject.footerText.getText()]; - case 1: - footerText = _a.sent(); - footerTextArray = footerText.split(' '); - displayedYear = footerTextArray.length > 2 ? footerTextArray[2] : ''; - expectedYear = new Date().getFullYear().toString(); - expect(expectedYear).toEqual(displayedYear); - return [2 /*return*/]; - } - }); - }); - }; - return FooterHelper; -}()); -exports.FooterHelper = FooterHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9mb290ZXIvZm9vdGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBK0M7QUFFL0M7SUFBQTtJQXNCQSxDQUFDO0lBckJDOztPQUVHO0lBQ1csdUJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSw0QkFBZ0IsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNpQiw0QkFBZSxHQUFuQzs7Ozs7NEJBQ3FCLHFCQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dCQUE3RCxVQUFVLEdBQUcsU0FBZ0Q7d0JBQzdELGVBQWUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUV4QyxhQUFhLEdBQUcsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNyRSxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFFekQsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzs7Ozs7S0FDN0M7SUFHSCxtQkFBQztBQUFELENBQUMsQUF0QkQsSUFzQkM7QUF0Qlksb0NBQVkifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/footer/footer.po.js b/connect-automation/temp/page-objects/profile-update/footer/footer.po.js deleted file mode 100644 index 450fdd0e9..000000000 --- a/connect-automation/temp/page-objects/profile-update/footer/footer.po.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FooterPageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var FooterPageObject = /** @class */ (function () { - function FooterPageObject() { - } - Object.defineProperty(FooterPageObject.prototype, "footerText", { - /** - * Get Footer Copyright Text - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('copyright-notice'); - }, - enumerable: false, - configurable: true - }); - return FooterPageObject; -}()); -exports.FooterPageObject = FooterPageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLnBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2ZpbGUtdXBkYXRlL2Zvb3Rlci9mb290ZXIucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXFEO0FBRXJEO0lBQUE7SUFPQSxDQUFDO0lBSEMsc0JBQVcsd0NBQVU7UUFIckI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQztBQVBZLDRDQUFnQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js b/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js deleted file mode 100644 index 4d791b2e8..000000000 --- a/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.helper.js +++ /dev/null @@ -1,177 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LeftMenuPageHelper = void 0; -var logger_1 = require("../../../logger/logger"); -var config_helper_1 = require("../../../utils/config-helper"); -var common_helper_1 = require("../../common-page/common.helper"); -var left_menu_po_1 = require("./left-menu.po"); -var LeftMenuPageHelper = /** @class */ (function () { - function LeftMenuPageHelper() { - } - /** - * Initialize Left Menu Page Object - */ - LeftMenuPageHelper.initialize = function () { - this.leftMenuPageObject = new left_menu_po_1.LeftMenuPageObject(); - }; - /** - * Verify Profile Information Link redirected correctly - */ - LeftMenuPageHelper.verifyProfileInformation = function () { - return __awaiter(this, void 0, void 0, function () { - var profileInfo; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.leftMenuPageObject.profileInformationLink()]; - case 1: - profileInfo = _a.sent(); - return [4 /*yield*/, profileInfo.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 3: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getMyProfileUrl())]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify Notification Settings Link redirected correctly - */ - LeftMenuPageHelper.verifyNotificationSettings = function () { - return __awaiter(this, void 0, void 0, function () { - var notificationSettings; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.leftMenuPageObject.notificationSettingsLink()]; - case 1: - notificationSettings = _a.sent(); - return [4 /*yield*/, notificationSettings.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 3: - _a.sent(); - logger_1.logger.info('User navigated to Notification Settings Page'); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getNotificationSettingsUrl())]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify Account & Security Link redirected correctly - */ - LeftMenuPageHelper.verifyAccountAndSecurity = function () { - return __awaiter(this, void 0, void 0, function () { - var accountAndSecurity; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.leftMenuPageObject.accountAndSecurityLink()]; - case 1: - accountAndSecurity = _a.sent(); - return [4 /*yield*/, accountAndSecurity.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 3: - _a.sent(); - logger_1.logger.info('User navigated to Account & Security Page'); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getAccountAndSecurityUrl())]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify All Projects redirected correctly - */ - LeftMenuPageHelper.verifyAllProjects = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.leftMenuPageObject.allProjectsLink.click()]; - case 1: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 2: - _a.sent(); - logger_1.logger.info('User navigated to All Projects Page'); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getAllProjectsUrl())]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify Notification Link redirected to correctly - */ - LeftMenuPageHelper.verifyNotifications = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.leftMenuPageObject.notificationsLink.click()]; - case 1: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 2: - _a.sent(); - logger_1.logger.info('User navigated to Notifications Page'); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getNotificationUrl())]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - return LeftMenuPageHelper; -}()); -exports.LeftMenuPageHelper = LeftMenuPageHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1tZW51LmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9sZWZ0LW1lbnUvbGVmdC1tZW51LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBQzVELGlFQUErRDtBQUMvRCwrQ0FBb0Q7QUFFcEQ7SUFBQTtJQWtFQSxDQUFDO0lBakVDOztPQUVHO0lBQ1csNkJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxpQ0FBa0IsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNpQiwyQ0FBd0IsR0FBNUM7Ozs7OzRCQUNzQixxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsRUFBQTs7d0JBQXBFLFdBQVcsR0FBRyxTQUFzRDt3QkFDMUUscUJBQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBekIsU0FBeUIsQ0FBQzt3QkFDMUIscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzt3QkFFMUMscUJBQU0sNEJBQVksQ0FBQyxhQUFhLENBQUMsNEJBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFBOzt3QkFBaEUsU0FBZ0UsQ0FBQzs7Ozs7S0FDbEU7SUFFRDs7T0FFRztJQUNpQiw2Q0FBMEIsR0FBOUM7Ozs7OzRCQUMrQixxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLEVBQUUsRUFBQTs7d0JBQS9FLG9CQUFvQixHQUFHLFNBQXdEO3dCQUNyRixxQkFBTSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQWxDLFNBQWtDLENBQUM7d0JBQ25DLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7d0JBQzFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQzt3QkFFNUQscUJBQU0sNEJBQVksQ0FBQyxhQUFhLENBQUMsNEJBQVksQ0FBQywwQkFBMEIsRUFBRSxDQUFDLEVBQUE7O3dCQUEzRSxTQUEyRSxDQUFDOzs7OztLQUM3RTtJQUVEOztPQUVHO0lBQ2lCLDJDQUF3QixHQUE1Qzs7Ozs7NEJBQzZCLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxFQUFBOzt3QkFBM0Usa0JBQWtCLEdBQUcsU0FBc0Q7d0JBQ2pGLHFCQUFNLGtCQUFrQixDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBaEMsU0FBZ0MsQ0FBQzt3QkFDakMscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzt3QkFDMUMsZUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO3dCQUV6RCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUMsRUFBQTs7d0JBQXpFLFNBQXlFLENBQUM7Ozs7O0tBQzNFO0lBRUQ7O09BRUc7SUFDaUIsb0NBQWlCLEdBQXJDOzs7OzRCQUNFLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUFyRCxTQUFxRCxDQUFDO3dCQUN0RCxxQkFBTSw0QkFBWSxDQUFDLG9CQUFvQixFQUFFLEVBQUE7O3dCQUF6QyxTQUF5QyxDQUFDO3dCQUMxQyxlQUFNLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7d0JBRW5ELHFCQUFNLDRCQUFZLENBQUMsYUFBYSxDQUFDLDRCQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFBOzt3QkFBbEUsU0FBa0UsQ0FBQzs7Ozs7S0FDcEU7SUFFRDs7T0FFRztJQUNpQixzQ0FBbUIsR0FBdkM7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBdkQsU0FBdUQsQ0FBQzt3QkFDeEQscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzt3QkFDMUMsZUFBTSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3dCQUVwRCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLGtCQUFrQixFQUFFLENBQUMsRUFBQTs7d0JBQW5FLFNBQW1FLENBQUM7Ozs7O0tBQ3JFO0lBR0gseUJBQUM7QUFBRCxDQUFDLEFBbEVELElBa0VDO0FBbEVZLGdEQUFrQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js b/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js deleted file mode 100644 index 25a5e0dce..000000000 --- a/connect-automation/temp/page-objects/profile-update/left-menu/left-menu.po.js +++ /dev/null @@ -1,135 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LeftMenuPageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var LeftMenuPageObject = /** @class */ (function () { - function LeftMenuPageObject() { - } - Object.defineProperty(LeftMenuPageObject.prototype, "myProfileLink", { - /** - * Get My Profile Link Element - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementContainingText('MY PROFILE'); - }, - enumerable: false, - configurable: true - }); - /** - * Get Sub Menus - */ - LeftMenuPageObject.prototype.getSubmenus = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('_1l5nE0 _3wRYsd')]; - }); - }); - }; - /** - * Get Profile Information Link - */ - LeftMenuPageObject.prototype.profileInformationLink = function () { - return __awaiter(this, void 0, void 0, function () { - var menus; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.getSubmenus()]; - case 1: - menus = _a.sent(); - return [2 /*return*/, menus[0]]; - } - }); - }); - }; - /** - * Get Notification Settings Link - */ - LeftMenuPageObject.prototype.notificationSettingsLink = function () { - return __awaiter(this, void 0, void 0, function () { - var menus; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.getSubmenus()]; - case 1: - menus = _a.sent(); - return [2 /*return*/, menus[1]]; - } - }); - }); - }; - /** - * Get Account & Security Link - */ - LeftMenuPageObject.prototype.accountAndSecurityLink = function () { - return __awaiter(this, void 0, void 0, function () { - var menus; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.getSubmenus()]; - case 1: - menus = _a.sent(); - return [2 /*return*/, menus[2]]; - } - }); - }); - }; - Object.defineProperty(LeftMenuPageObject.prototype, "allProjectsLink", { - /** - * Get All Projects Link - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementContainingText('ALL PROJECTS'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LeftMenuPageObject.prototype, "notificationsLink", { - /** - * Get Notifications Link - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementContainingText('NOTIFICATIONS'); - }, - enumerable: false, - configurable: true - }); - return LeftMenuPageObject; -}()); -exports.LeftMenuPageObject = LeftMenuPageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1tZW51LnBvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2ZpbGUtdXBkYXRlL2xlZnQtbWVudS9sZWZ0LW1lbnUucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQXFEO0FBRXJEO0lBQUE7SUFvREEsQ0FBQztJQWhEQyxzQkFBVyw2Q0FBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlELENBQUM7OztPQUFBO0lBRUQ7O09BRUc7SUFDVSx3Q0FBVyxHQUF4Qjs7O2dCQUNFLHNCQUFPLG9DQUFhLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBQzs7O0tBQ25FO0lBRUQ7O09BRUc7SUFDVSxtREFBc0IsR0FBbkM7Ozs7OzRCQUNnQixxQkFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUE7O3dCQUFoQyxLQUFLLEdBQUcsU0FBd0I7d0JBQ3RDLHNCQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQzs7OztLQUNqQjtJQUVEOztPQUVHO0lBQ1UscURBQXdCLEdBQXJDOzs7Ozs0QkFDZ0IscUJBQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFBOzt3QkFBaEMsS0FBSyxHQUFHLFNBQXdCO3dCQUN0QyxzQkFBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUM7Ozs7S0FDakI7SUFFRDs7T0FFRztJQUNVLG1EQUFzQixHQUFuQzs7Ozs7NEJBQ2dCLHFCQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQTs7d0JBQWhDLEtBQUssR0FBRyxTQUF3Qjt3QkFDdEMsc0JBQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDOzs7O0tBQ2pCO0lBS0Qsc0JBQVcsK0NBQWU7UUFIMUI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLGlEQUFpQjtRQUg1Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBcERELElBb0RDO0FBcERZLGdEQUFrQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js deleted file mode 100644 index ec5db7bd6..000000000 --- a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.helper.js +++ /dev/null @@ -1,449 +0,0 @@ -"use strict"; -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MyProfilePageHelper = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var logger_1 = require("../../../logger/logger"); -var common_helper_1 = require("../../common-page/common.helper"); -var config_helper_1 = require("../../../utils/config-helper"); -var my_profile_po_1 = require("./my-profile.po"); -var MyProfilePageHelper = /** @class */ (function () { - function MyProfilePageHelper() { - } - /** - * Initialize My Profile page object - */ - MyProfilePageHelper.initialize = function () { - this.myProfilePageObject = new my_profile_po_1.MyProfilePageObject(); - }; - /** - * Opens the My Profile page - */ - MyProfilePageHelper.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, my_profile_po_1.MyProfilePageObject.open()]; - case 1: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 2: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update First Name Field - * @param firstName first name - */ - MyProfilePageHelper.updateFirstName = function (firstName) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.firstNameField, firstName)]; - case 1: - _a.sent(); - logger_1.logger.info("Updated Last Name Field: " + firstName); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update Last Name Field - * @param lastName last name - */ - MyProfilePageHelper.updateLastName = function (lastName) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.lastNameField, lastName)]; - case 1: - _a.sent(); - logger_1.logger.info("Updated Last Name Field: " + lastName); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update Title Field - * @param title title - */ - MyProfilePageHelper.updateTitle = function (title) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.titleField, title)]; - case 1: - _a.sent(); - logger_1.logger.info("Updated Title Field: " + title); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update Company Url Field - * @param companyUrl company url - */ - MyProfilePageHelper.updateCompanyUrl = function (companyUrl) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(this.myProfilePageObject.companyUrlField, companyUrl)]; - case 1: - _a.sent(); - logger_1.logger.info("Updated Company Url Field: " + companyUrl); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update Local Time Zone Field - * @param localTimezone local timezone - */ - MyProfilePageHelper.updateLocalTimezone = function (localTimezone) { - return __awaiter(this, void 0, void 0, function () { - var el, selectOption; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.myProfilePageObject.localTimezoneField()]; - case 1: - el = _a.sent(); - return [4 /*yield*/, el.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(localTimezone)]; - case 3: - selectOption = _a.sent(); - logger_1.logger.info("Updated Local Time Field: " + localTimezone); - return [4 /*yield*/, selectOption.click()]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update Start Time Field - * @param startTime start time - */ - MyProfilePageHelper.updateStartTime = function (startTime) { - return __awaiter(this, void 0, void 0, function () { - var el, selectOption; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.myProfilePageObject.startTimeField()]; - case 1: - el = _a.sent(); - return [4 /*yield*/, el.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(startTime)]; - case 3: - selectOption = _a.sent(); - logger_1.logger.info("Updated Start Time Field: " + startTime); - return [4 /*yield*/, selectOption.click()]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update End Time Field - * @param endTime end time - */ - MyProfilePageHelper.updateEndTime = function (endTime) { - return __awaiter(this, void 0, void 0, function () { - var el, selectOption; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.myProfilePageObject.endTimeField()]; - case 1: - el = _a.sent(); - return [4 /*yield*/, el.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(endTime)]; - case 3: - selectOption = _a.sent(); - logger_1.logger.info("Updated End Time Field: " + endTime); - return [4 /*yield*/, selectOption.click()]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Update Country Field - * @param country country name - */ - MyProfilePageHelper.updateCountryDropdown = function (country) { - return __awaiter(this, void 0, void 0, function () { - var el, selectOption; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.myProfilePageObject.countryField()]; - case 1: - el = _a.sent(); - return [4 /*yield*/, el.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(200)]; - case 3: - _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.selectTextFromDropDown(country)]; - case 4: - selectOption = _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(200)]; - case 5: - _a.sent(); - logger_1.logger.info("Updated Country Field: " + country); - return [4 /*yield*/, selectOption.click()]; - case 6: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Fill Profile Information on User Settings Page. - */ - MyProfilePageHelper.updateProfileInformation = function (userProfile) { - return __awaiter(this, void 0, void 0, function () { - var alertElement; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.updateFirstName(userProfile.firstName)]; - case 1: - _a.sent(); - return [4 /*yield*/, this.updateLastName(userProfile.lastName)]; - case 2: - _a.sent(); - return [4 /*yield*/, this.updateTitle(userProfile.title)]; - case 3: - _a.sent(); - return [4 /*yield*/, this.updateCompanyUrl(userProfile.companyUrl)]; - case 4: - _a.sent(); - return [4 /*yield*/, this.updateLocalTimezone(userProfile.localTimezone)]; - case 5: - _a.sent(); - return [4 /*yield*/, this.updateStartTime(userProfile.startTime)]; - case 6: - _a.sent(); - return [4 /*yield*/, this.updateEndTime(userProfile.endTime)]; - case 7: - _a.sent(); - // Click on Save Settings button. - return [4 /*yield*/, this.myProfilePageObject.submitButton.click()]; - case 8: - // Click on Save Settings button. - _a.sent(); - alertElement = this.myProfilePageObject.successAlert; - return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; - case 9: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Select Country From Business Phone Field. - * @param businessPhoneCountry business phone country - */ - MyProfilePageHelper.changeBusinessPhoneCountry = function (businessPhoneCountry) { - return __awaiter(this, void 0, void 0, function () { - var countryField, dropDownParent, selectOptions; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - countryField = this.myProfilePageObject.businessPhoneCountryField; - return [4 /*yield*/, countryField.click()]; - case 1: - _a.sent(); - dropDownParent = this.myProfilePageObject.businessPhoneDropdown; - return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByLinkText(businessPhoneCountry, dropDownParent)]; - case 2: - selectOptions = _a.sent(); - return [4 /*yield*/, selectOptions[0].click()]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verifies whether the current user can update the basic information. - * @param userProfile Test data for User Profile - */ - MyProfilePageHelper.verifyProfileInformation = function (userProfile) { - return __awaiter(this, void 0, void 0, function () { - var firstName, lastName, title, companyUrl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // My Profile page update button becomes active only when data is changed. - // To be able to edit in every test case we are adding timestamp to firstname field. - userProfile = __assign(__assign({}, userProfile), { firstName: common_helper_1.CommonHelper.appendDate(userProfile.firstName) }); - return [4 /*yield*/, this.updateProfileInformation(userProfile)]; - case 1: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; - case 2: - _a.sent(); - // Go To User Profile Page Again - return [4 /*yield*/, this.open()]; - case 3: - // Go To User Profile Page Again - _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.getFirstNameValue()]; - case 4: - firstName = _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.getLastNameValue()]; - case 5: - lastName = _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.getTitleValue()]; - case 6: - title = _a.sent(); - return [4 /*yield*/, this.myProfilePageObject.getCompanyUrlValue()]; - case 7: - companyUrl = _a.sent(); - expect(firstName).toEqual(userProfile.firstName); - expect(lastName).toEqual(userProfile.lastName); - expect(title).toEqual(userProfile.title); - expect(companyUrl).toEqual(userProfile.companyUrl); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verifies whether the business phone/country sync accordingly. - * @param userProfile Test data for User Profile - */ - MyProfilePageHelper.verifyBusinessPhoneSync = function (userProfile) { - return __awaiter(this, void 0, void 0, function () { - var country, countryCode, businessPhoneCountry, businessPhoneCountryCode, countryAbbr, businessNumber, currentCountryCode, _a, countryAbbreviation; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - country = userProfile.country, countryCode = userProfile.countryCode, businessPhoneCountry = userProfile.businessPhoneCountry, businessPhoneCountryCode = userProfile.businessPhoneCountryCode, countryAbbr = userProfile.countryAbbr; - return [4 /*yield*/, this.changeBusinessPhoneCountry(businessPhoneCountry)]; - case 1: - _b.sent(); - return [4 /*yield*/, this.myProfilePageObject.getBusinessPhoneValue()]; - case 2: - businessNumber = _b.sent(); - currentCountryCode = businessNumber.substr(0, businessPhoneCountryCode.length); - expect(currentCountryCode).toEqual(businessPhoneCountryCode); - _a = expect; - return [4 /*yield*/, this.myProfilePageObject.countryField()]; - case 3: return [4 /*yield*/, (_b.sent()).getText()]; - case 4: - _a.apply(void 0, [_b.sent()]).toEqual(businessPhoneCountry); - return [4 /*yield*/, this.updateCountryDropdown(country)]; - case 5: - _b.sent(); - return [4 /*yield*/, this.myProfilePageObject.getBusinessPhoneValue()]; - case 6: - businessNumber = _b.sent(); - currentCountryCode = businessNumber.substr(0, countryCode.length); - return [4 /*yield*/, this.myProfilePageObject.countryAbbreviation()]; - case 7: - countryAbbreviation = _b.sent(); - expect(countryAbbreviation).toEqual(countryAbbr); - expect(currentCountryCode).toEqual(countryCode); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verifies whether the user can close the profile window. - */ - MyProfilePageHelper.verifyUserCloseProfileWindow = function () { - return __awaiter(this, void 0, void 0, function () { - var closeButton, currentUrl, expectedUrl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - closeButton = this.myProfilePageObject.closeButton; - return [4 /*yield*/, closeButton.click()]; - case 1: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; - case 2: - currentUrl = _a.sent(); - expectedUrl = config_helper_1.ConfigHelper.getAllProjectsUrl(); - expect(currentUrl).toContain(expectedUrl); - return [2 /*return*/]; - } - }); - }); - }; - return MyProfilePageHelper; -}()); -exports.MyProfilePageHelper = MyProfilePageHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvZmlsZS11cGRhdGUvbXktcHJvZmlsZS9teS1wcm9maWxlLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsaUVBQStEO0FBQy9ELDhEQUE0RDtBQUU1RCxpREFBc0Q7QUFFdEQ7SUFBQTtJQTJPQSxDQUFDO0lBMU9DOztPQUVHO0lBQ1csOEJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxtQ0FBbUIsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNpQix3QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxtQ0FBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQWhDLFNBQWdDLENBQUM7d0JBQ2pDLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7d0JBQzFDLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFFRDs7O09BR0c7SUFDaUIsbUNBQWUsR0FBbkMsVUFBb0MsU0FBaUI7Ozs7NEJBQ25ELHFCQUFNLDRCQUFZLENBQUMsY0FBYyxDQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUN2QyxTQUFTLENBQ1YsRUFBQTs7d0JBSEQsU0FHQyxDQUFDO3dCQUNGLGVBQU0sQ0FBQyxJQUFJLENBQUMsOEJBQTRCLFNBQVcsQ0FBQyxDQUFDOzs7OztLQUN0RDtJQUVEOzs7T0FHRztJQUNpQixrQ0FBYyxHQUFsQyxVQUFtQyxRQUFnQjs7Ozs0QkFDakQscUJBQU0sNEJBQVksQ0FBQyxjQUFjLENB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js deleted file mode 100644 index adc5e5d85..000000000 --- a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.model.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9teS1wcm9maWxlL215LXByb2ZpbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js b/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js deleted file mode 100644 index 5de6e852b..000000000 --- a/connect-automation/temp/page-objects/profile-update/my-profile/my-profile.po.js +++ /dev/null @@ -1,322 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MyProfilePageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var logger_1 = require("../../../logger/logger"); -var common_helper_1 = require("../../common-page/common.helper"); -var config_helper_1 = require("../../../utils/config-helper"); -var MyProfilePageObject = /** @class */ (function () { - function MyProfilePageObject() { - } - /** - * Open the My Profile page - */ - MyProfilePageObject.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getMyProfileUrl())]; - case 1: - _a.sent(); - logger_1.logger.info('User navigated to My Profile Page'); - return [2 /*return*/]; - } - }); - }); - }; - Object.defineProperty(MyProfilePageObject.prototype, "firstNameField", { - /** - * Get First Name field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('firstName'); - }, - enumerable: false, - configurable: true - }); - /** - * Get First Name value - */ - MyProfilePageObject.prototype.getFirstNameValue = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('firstName').getAttribute('value')]; - }); - }); - }; - Object.defineProperty(MyProfilePageObject.prototype, "lastNameField", { - /** - * Get Last Name field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('lastName'); - }, - enumerable: false, - configurable: true - }); - /** - * Get Last Name field value - */ - MyProfilePageObject.prototype.getLastNameValue = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('lastName').getAttribute('value')]; - }); - }); - }; - Object.defineProperty(MyProfilePageObject.prototype, "titleField", { - /** - * Get Title field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('title'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(MyProfilePageObject.prototype, "businessPhoneField", { - /** - * Get Business Phone field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('businessPhone'); - }, - enumerable: false, - configurable: true - }); - /** - * Get Business Phone field - */ - MyProfilePageObject.prototype.getBusinessPhoneValue = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('businessPhone').getAttribute('value')]; - }); - }); - }; - /** - * Get Country Abbreviation from Business Phone dropdown - */ - MyProfilePageObject.prototype.countryAbbreviation = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByClassName('dropdown-menu-header').getText()]; - }); - }); - }; - /** - * Get title field value - */ - MyProfilePageObject.prototype.getTitleValue = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('title').getAttribute('value')]; - }); - }); - }; - Object.defineProperty(MyProfilePageObject.prototype, "companyUrlField", { - /** - * Get Company Url Field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('companyURL'); - }, - enumerable: false, - configurable: true - }); - /** - * Get Company Url value - */ - MyProfilePageObject.prototype.getCompanyUrlValue = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByName('companyURL').getAttribute('value')]; - }); - }); - }; - /** - * Get Local TimeZone Field - */ - MyProfilePageObject.prototype.localTimezoneField = function () { - return __awaiter(this, void 0, void 0, function () { - var xpath, parentEl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - xpath = "//span[text()='Local Timezone']/../following-sibling::div//div"; - return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; - case 1: - parentEl = _a.sent(); - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; - } - }); - }); - }; - /** - * Get Start Time Field - */ - MyProfilePageObject.prototype.startTimeField = function () { - return __awaiter(this, void 0, void 0, function () { - var xpath, parentEl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - xpath = "//label[text()='Start Time']/following-sibling::div"; - return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; - case 1: - parentEl = _a.sent(); - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; - } - }); - }); - }; - /** - * Get End Time Field - */ - MyProfilePageObject.prototype.endTimeField = function () { - return __awaiter(this, void 0, void 0, function () { - var xpath, parentEl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - xpath = "//label[text()='End Time']/following-sibling::div"; - return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; - case 1: - parentEl = _a.sent(); - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; - } - }); - }); - }; - /** - * Get Country Field - */ - MyProfilePageObject.prototype.countryField = function () { - return __awaiter(this, void 0, void 0, function () { - var xpath, parentEl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - xpath = "//span[text()='Country']/../following-sibling::div//div"; - return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByXPath(xpath)]; - case 1: - parentEl = _a.sent(); - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCss('div.react-select__control', parentEl[0])]; - } - }); - }); - }; - Object.defineProperty(MyProfilePageObject.prototype, "submitButton", { - /** - * Get Submit Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Save settings'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(MyProfilePageObject.prototype, "successAlert", { - /** - * Get Success Alert Span - */ - get: function () { - return common_helper_1.CommonHelper.findElementByText('span', 'Settings successfully saved.'); - }, - enumerable: false, - configurable: true - }); - /** - * Find Selected Text From Dropdown Menu - * @param text string - * @param parent (optional) parent element - */ - MyProfilePageObject.prototype.selectTextFromDropDown = function (text, parent) { - return __awaiter(this, void 0, void 0, function () { - var results; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.findTextFromDropDown(text, parent)]; - case 1: - results = _a.sent(); - if (results.length > 2) { - return [2 /*return*/, results[2]]; - } - else { - return [2 /*return*/, results[0]]; - } - return [2 /*return*/]; - } - }); - }); - }; - Object.defineProperty(MyProfilePageObject.prototype, "closeButton", { - /** - * Get Close Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('close'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(MyProfilePageObject.prototype, "businessPhoneCountryField", { - /** - * Get Business Phone Country Field Element - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('dropdown-wrap undefined'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(MyProfilePageObject.prototype, "businessPhoneDropdown", { - /** - * Get Business Phone Dropdown Element - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('dropdown-menu-list'); - }, - enumerable: false, - configurable: true - }); - return MyProfilePageObject; -}()); -exports.MyProfilePageObject = MyProfilePageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5wby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhZ2Utb2JqZWN0cy9wcm9maWxlLXVwZGF0ZS9teS1wcm9maWxlL215LXByb2ZpbGUucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQW9FO0FBQ3BFLGlEQUFnRDtBQUVoRCxpRUFBK0Q7QUFDL0QsOERBQTREO0FBRTVEO0lBQUE7SUE0TEEsQ0FBQztJQTNMQzs7T0FFRztJQUNpQix3QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxvQ0FBYSxDQUFDLElBQUksQ0FBQyw0QkFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUE7O3dCQUF4RCxTQUF3RCxDQUFDO3dCQUN6RCxlQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Ozs7O0tBQ2xEO0lBS0Qsc0JBQVcsK0NBQWM7UUFIekI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDOzs7T0FBQTtJQUVEOztPQUVHO0lBQ1UsK0NBQWlCLEdBQTlCOzs7Z0JBQ0Usc0JBQU8sb0NBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUM7OztLQUMxRTtJQUtELHNCQUFXLDhDQUFhO1FBSHhCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLDhDQUFnQixHQUE3Qjs7O2dCQUNFLHNCQUFPLG9DQUFhLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFDOzs7S0FDekU7SUFLRCxzQkFBVywyQ0FBVTtRQUhyQjs7V0FFRzth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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js b/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js deleted file mode 100644 index 17eee3532..000000000 --- a/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.helper.js +++ /dev/null @@ -1,157 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UserProfileMenuHelper = void 0; -var config_helper_1 = require("../../../utils/config-helper"); -var common_helper_1 = require("../../common-page/common.helper"); -var user_profile_menu_po_1 = require("./user-profile-menu.po"); -var UserProfileMenuHelper = /** @class */ (function () { - function UserProfileMenuHelper() { - } - /** - * Initialize User Profile Page Object - */ - UserProfileMenuHelper.initialize = function () { - this.userProfilePageObject = new user_profile_menu_po_1.UserProfilePageObject(); - }; - /** - * Opens Profile Menu from right top corner section - */ - UserProfileMenuHelper.openMenuDropdown = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.navigateToAllProjectsPage()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.userProfilePageObject.menuDropdown.click()]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify My Profile Page redirects to correct url - */ - UserProfileMenuHelper.verifyMyProfile = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.openMenuDropdown()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.userProfilePageObject.myProfileLink.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getMyProfileUrl())]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify Notification Settings button redirects correctly - */ - UserProfileMenuHelper.verifyNotificationSettings = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.openMenuDropdown()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.userProfilePageObject.notificationSettingsLink.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getNotificationSettingsUrl())]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify Account & Security button redirects correctly - */ - UserProfileMenuHelper.verifyAccountAndSecurity = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.openMenuDropdown()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.userProfilePageObject.accountSecurityLink.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getAccountAndSecurityUrl())]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify Logout button redirects to home page. - */ - UserProfileMenuHelper.verifyLogout = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.openMenuDropdown()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.userProfilePageObject.logoutLink.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.verifyPageUrl(config_helper_1.ConfigHelper.getHomePageUrl())]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - return UserProfileMenuHelper; -}()); -exports.UserProfileMenuHelper = UserProfileMenuHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLW1lbnUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2ZpbGUtdXBkYXRlL3VzZXItcHJvZmlsZS1tZW51L3VzZXItcHJvZmlsZS1tZW51LmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4REFBNEQ7QUFDNUQsaUVBQStEO0FBQy9ELCtEQUErRDtBQUUvRDtJQUFBO0lBcURBLENBQUM7SUFwREM7O09BRUc7SUFDVyxnQ0FBVSxHQUF4QjtRQUNFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLDRDQUFxQixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ2lCLHNDQUFnQixHQUFwQzs7Ozs0QkFDRSxxQkFBTSw0QkFBWSxDQUFDLHlCQUF5QixFQUFFLEVBQUE7O3dCQUE5QyxTQUE4QyxDQUFDO3dCQUMvQyxxQkFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBckQsU0FBcUQsQ0FBQzs7Ozs7S0FDdkQ7SUFFRDs7T0FFRztJQUNpQixxQ0FBZSxHQUFuQzs7Ozs0QkFDRSxxQkFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBQTs7d0JBQTdCLFNBQTZCLENBQUM7d0JBQzlCLHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUF0RCxTQUFzRCxDQUFDO3dCQUN2RCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUE7O3dCQUFoRSxTQUFnRSxDQUFDOzs7OztLQUNsRTtJQUVEOztPQUVHO0lBQ2lCLGdEQUEwQixHQUE5Qzs7Ozs0QkFDRSxxQkFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBQTs7d0JBQTdCLFNBQTZCLENBQUM7d0JBQzlCLHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQWpFLFNBQWlFLENBQUM7d0JBQ2xFLHFCQUFNLDRCQUFZLENBQUMsYUFBYSxDQUFDLDRCQUFZLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxFQUFBOzt3QkFBM0UsU0FBMkUsQ0FBQzs7Ozs7S0FDN0U7SUFFRDs7T0FFRztJQUNpQiw4Q0FBd0IsR0FBNUM7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUE7O3dCQUE3QixTQUE2QixDQUFDO3dCQUM5QixxQkFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUE1RCxTQUE0RCxDQUFDO3dCQUM3RCxxQkFBTSw0QkFBWSxDQUFDLGFBQWEsQ0FBQyw0QkFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUMsRUFBQTs7d0JBQXpFLFNBQXlFLENBQUM7Ozs7O0tBQzNFO0lBRUQ7O09BRUc7SUFDaUIsa0NBQVksR0FBaEM7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUE7O3dCQUE3QixTQUE2QixDQUFDO3dCQUM5QixxQkFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBbkQsU0FBbUQsQ0FBQzt3QkFDcEQscUJBQU0sNEJBQVksQ0FBQyxhQUFhLENBQUMsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFBOzt3QkFBL0QsU0FBK0QsQ0FBQzs7Ozs7S0FDakU7SUFHSCw0QkFBQztBQUFELENBQUMsQUFyREQsSUFxREM7QUFyRFksc0RBQXFCIn0= \ No newline at end of file diff --git a/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js b/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js deleted file mode 100644 index 8cc88475c..000000000 --- a/connect-automation/temp/page-objects/profile-update/user-profile-menu/user-profile-menu.po.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.UserProfilePageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var UserProfilePageObject = /** @class */ (function () { - function UserProfilePageObject() { - } - Object.defineProperty(UserProfilePageObject.prototype, "menuDropdown", { - /** - * Get Menu Dropdown Element - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('menu-wrap'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(UserProfilePageObject.prototype, "myProfileLink", { - /** - * Get My Profile Link - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('My profile'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(UserProfilePageObject.prototype, "notificationSettingsLink", { - /** - * Get Notification Settings Link - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('Notification settings'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(UserProfilePageObject.prototype, "accountSecurityLink", { - /** - * Get Account & Security Link - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('Account & security'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(UserProfilePageObject.prototype, "logoutLink", { - /** - * Get Logout Link - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('Log out'); - }, - enumerable: false, - configurable: true - }); - return UserProfilePageObject; -}()); -exports.UserProfilePageObject = UserProfilePageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLW1lbnUucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvZmlsZS11cGRhdGUvdXNlci1wcm9maWxlLW1lbnUvdXNlci1wcm9maWxlLW1lbnUucG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXFEO0FBRXJEO0lBQUE7SUFtQ0EsQ0FBQztJQS9CQyxzQkFBVywrQ0FBWTtRQUh2Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsZ0RBQWE7UUFIeEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxRCxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLDJEQUF3QjtRQUhuQzs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckUsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxzREFBbUI7UUFIOUI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsNkNBQVU7UUFIckI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxDQUFDOzs7T0FBQTtJQUNILDRCQUFDO0FBQUQsQ0FBQyxBQW5DRCxJQW1DQztBQW5DWSxzREFBcUIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js deleted file mode 100644 index 6421e75ac..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.helper.js +++ /dev/null @@ -1,405 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CreateProjectPageHelper = void 0; -var common_helper_1 = require("../../common-page/common.helper"); -var create_project_po_1 = require("./create-project.po"); -var CreateProjectPageHelper = /** @class */ (function () { - function CreateProjectPageHelper() { - } - /** - * Initialize Create Project page object - */ - CreateProjectPageHelper.initialize = function () { - this.createProjectPageObject = new create_project_po_1.CreateProjectPageObject(); - }; - /** - * Open Home page - */ - CreateProjectPageHelper.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, create_project_po_1.CreateProjectPageObject.open()]; - case 1: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verifies user can create design, development & deployment project - * @param projectData Project Creation Form Data - */ - CreateProjectPageHelper.verifyProjectCreation = function (projectData) { - return __awaiter(this, void 0, void 0, function () { - var appNameWithDate; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - appNameWithDate = common_helper_1.CommonHelper.appendDate(projectData.appName); - return [4 /*yield*/, this.clickNewProjectButton()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.navigateToViewSolutions()]; - case 2: - _a.sent(); - return [4 /*yield*/, this.clickOnDesignDevelopmentDeploymentButton()]; - case 3: - _a.sent(); - return [4 /*yield*/, this.fillBeforeWeStartForm(projectData.answers)]; - case 4: - _a.sent(); - return [4 /*yield*/, this.fillBasicDetailsForm(appNameWithDate, projectData.appDescription)]; - case 5: - _a.sent(); - return [4 /*yield*/, this.fillAppDefinitionForm(projectData)]; - case 6: - _a.sent(); - return [4 /*yield*/, this.saveProject()]; - case 7: - _a.sent(); - return [4 /*yield*/, this.goToYourProject(appNameWithDate)]; - case 8: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify page is displayed correctly. - * @param expectedTitle page's expected title - */ - CreateProjectPageHelper.verifyFormDisplayed = function (expectedTitle) { - return __awaiter(this, void 0, void 0, function () { - var pageTitle; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.formPageTitle.getText()]; - case 1: - pageTitle = _a.sent(); - expect(pageTitle).toBe(expectedTitle); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify page header summary - * @param expectedTitle page's expected title - */ - CreateProjectPageHelper.verifyHeaderSummary = function (expectedTitle) { - return __awaiter(this, void 0, void 0, function () { - var pageTitle; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.headerSummary.getText()]; - case 1: - pageTitle = _a.sent(); - expect(pageTitle).toBe(expectedTitle); - return [2 /*return*/]; - } - }); - }); - }; - /** - * If there is draft project exist, click on create new project button - */ - CreateProjectPageHelper.checkDraftProject = function () { - return __awaiter(this, void 0, void 0, function () { - var isDraftProject; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.draftProject.isPresent()]; - case 1: - isDraftProject = _a.sent(); - if (!isDraftProject) return [3 /*break*/, 3]; - return [4 /*yield*/, this.createProjectPageObject.createNewProject.click()]; - case 2: - _a.sent(); - _a.label = 3; - case 3: return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify new project page is displayed with two options /Talent as Service, Solutions/ - */ - CreateProjectPageHelper.clickNewProjectButton = function () { - return __awaiter(this, void 0, void 0, function () { - var titles, _a, _b; - var _this = this; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.newProjectButton.click()]; - case 1: - _c.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitUntilVisibilityOf(function () { return _this.createProjectPageObject.viewSolutions; }, 'Wait for New Project Form', true)]; - case 2: - _c.sent(); - return [4 /*yield*/, this.checkDraftProject()]; - case 3: - _c.sent(); - return [4 /*yield*/, this.createProjectPageObject.newProjectPageTitles]; - case 4: - titles = _c.sent(); - expect(titles.length).toBe(2); - _a = expect; - return [4 /*yield*/, titles[0].getText()]; - case 5: - _a.apply(void 0, [_c.sent()]).toBe('SOLUTIONS'); - _b = expect; - return [4 /*yield*/, titles[1].getText()]; - case 6: - _b.apply(void 0, [_c.sent()]).toBe('TALENT AS A SERVICE'); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Click on "View Solutions" under "SOLUTIONS" section - */ - CreateProjectPageHelper.navigateToViewSolutions = function () { - return __awaiter(this, void 0, void 0, function () { - var title; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.viewSolutions.click()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.createProjectPageObject.solutionCatalogTitle.getText()]; - case 2: - title = _a.sent(); - expect(title).toBe('TOPCODER SOLUTIONS'); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Click on "Select" button under Design, Development and Deployment. - */ - CreateProjectPageHelper.clickOnDesignDevelopmentDeploymentButton = function () { - return __awaiter(this, void 0, void 0, function () { - var selectButton; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.selectButton()]; - case 1: - selectButton = _a.sent(); - return [4 /*yield*/, selectButton.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, this.verifyFormDisplayed('Before we start')]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Fill Before We Start form - * @param answers answers object defined by test data - */ - CreateProjectPageHelper.fillBeforeWeStartForm = function (answers) { - return __awaiter(this, void 0, void 0, function () { - var beforeWeStart; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - beforeWeStart = answers.beforeWeStart; - return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(beforeWeStart)]; - case 1: - _a.sent(); - return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, this.verifyFormDisplayed('Basic Details')]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Fill Basic Details Form, then click next - * @param appName application name - * @param appDescription app description - */ - CreateProjectPageHelper.fillBasicDetailsForm = function (appName, appDescription) { - return __awaiter(this, void 0, void 0, function () { - var name, description; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - name = this.createProjectPageObject.appNameInput; - return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(name, appName)]; - case 1: - _a.sent(); - description = this.createProjectPageObject.appDescriptionInput; - return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(description, appDescription)]; - case 2: - _a.sent(); - return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; - case 3: - _a.sent(); - return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Fill App Definition Form, then click next - * @param projectData project data from test data - */ - CreateProjectPageHelper.fillAppDefinitionForm = function (projectData) { - return __awaiter(this, void 0, void 0, function () { - var _a, whatDoYouNeed, howManyScreens, willYourAppNeedMoreScreen, whereShouldAppWork, howShouldAppWorks, notesInput; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = projectData.answers, whatDoYouNeed = _a.whatDoYouNeed, howManyScreens = _a.howManyScreens, willYourAppNeedMoreScreen = _a.willYourAppNeedMoreScreen, whereShouldAppWork = _a.whereShouldAppWork, howShouldAppWorks = _a.howShouldAppWorks; - return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(whatDoYouNeed)]; - case 1: - _b.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(willYourAppNeedMoreScreen)]; - case 2: - _b.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(howManyScreens)]; - case 3: - _b.sent(); - return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; - case 4: - _b.sent(); - return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; - case 5: - _b.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(whereShouldAppWork)]; - case 6: - _b.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.selectInputByContainingText(howShouldAppWorks)]; - case 7: - _b.sent(); - return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; - case 8: - _b.sent(); - return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; - case 9: - _b.sent(); - return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; - case 10: - _b.sent(); - return [4 /*yield*/, this.verifyFormDisplayed('App Definition')]; - case 11: - _b.sent(); - notesInput = this.createProjectPageObject.notesInput; - return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(notesInput, projectData.notes)]; - case 12: - _b.sent(); - return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; - case 13: - _b.sent(); - return [4 /*yield*/, this.createProjectPageObject.nextButton.click()]; - case 14: - _b.sent(); - return [4 /*yield*/, this.verifyHeaderSummary('Your Project Estimate')]; - case 15: - _b.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Save project and verify success message - */ - CreateProjectPageHelper.saveProject = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.saveMyProject.click()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.createProjectPageObject.waitForSubTitle()]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Navigate to Your Project page and verify recently created project - * @param appName app name - */ - CreateProjectPageHelper.goToYourProject = function (appName) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.createProjectPageObject.yourProjectButton.click()]; - case 1: - _b.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForProjectTitle()]; - case 2: - _b.sent(); - _a = expect; - return [4 /*yield*/, common_helper_1.CommonHelper.projectTitle().getText()]; - case 3: - _a.apply(void 0, [_b.sent()]).toBe(appName); - return [2 /*return*/]; - } - }); - }); - }; - return CreateProjectPageHelper; -}()); -exports.CreateProjectPageHelper = CreateProjectPageHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3QuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9jcmVhdGUtcHJvamVjdC9jcmVhdGUtcHJvamVjdC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaUVBQStEO0FBRS9ELHlEQUE4RDtBQUU5RDtJQUFBO0lBNExBLENBQUM7SUEzTEM7O09BRUc7SUFDVyxrQ0FBVSxHQUF4QjtRQUNFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLDJDQUF1QixFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ2lCLDRCQUFJLEdBQXhCOzs7OzRCQUNFLHFCQUFNLDJDQUF1QixDQUFDLElBQUksRUFBRSxFQUFBOzt3QkFBcEMsU0FBb0MsQ0FBQzt3QkFDckMscUJBQU0sNEJBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFBOzt3QkFBekMsU0FBeUMsQ0FBQzs7Ozs7S0FFM0M7SUFFRDs7O09BR0c7SUFDaUIsNkNBQXFCLEdBQXpDLFVBQTBDLFdBQXlCOzs7Ozs7d0JBQzNELGVBQWUsR0FBRyw0QkFBWSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBRXJFLHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFBOzt3QkFBbEMsU0FBa0MsQ0FBQzt3QkFDbkMscUJBQU0sSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUE7O3dCQUFwQyxTQUFvQyxDQUFDO3dCQUNyQyxxQkFBTSxJQUFJLENBQUMsd0NBQXdDLEVBQUUsRUFBQTs7d0JBQXJELFNBQXFELENBQUM7d0JBQ3RELHFCQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUE7O3dCQUFyRCxTQUFxRCxDQUFDO3dCQUN0RCxxQkFB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js deleted file mode 100644 index 06f0aff47..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.model.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L2NyZWF0ZS1wcm9qZWN0L2NyZWF0ZS1wcm9qZWN0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js b/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js deleted file mode 100644 index 29599e904..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/create-project/create-project.po.js +++ /dev/null @@ -1,252 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CreateProjectPageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var logger_1 = require("../../../logger/logger"); -var config_helper_1 = require("../../../utils/config-helper"); -var common_helper_1 = require("../../common-page/common.helper"); -var CreateProjectPageObject = /** @class */ (function () { - function CreateProjectPageObject() { - } - /** - * Open the Home page - */ - CreateProjectPageObject.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getHomePageUrl())]; - case 1: - _a.sent(); - logger_1.logger.info('User navigated to Home Page'); - return [2 /*return*/]; - } - }); - }); - }; - Object.defineProperty(CreateProjectPageObject.prototype, "newProjectButton", { - /** - * Get New Project Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByLinkText('+ New Project'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "newProjectPageTitles", { - /** - * Get New Project Page Title Elements - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('_1vZbtq'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "viewSolutions", { - /** - * Get View Solutions button from Create Project Page - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('View Solutions'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "solutionCatalogTitle", { - /** - * Get Solution Catalog Page's title element - */ - get: function () { - var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('SelectProjectTemplate'); - return topcoder_testing_lib_1.ElementHelper.getElementByTag('h1', parentEl); - }, - enumerable: false, - configurable: true - }); - /** - * Get Select Button - */ - CreateProjectPageObject.prototype.selectButton = function () { - return __awaiter(this, void 0, void 0, function () { - var selectButtons; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByButtonText('Select')]; - case 1: - selectButtons = _a.sent(); - return [2 /*return*/, selectButtons[0]]; - } - }); - }); - }; - Object.defineProperty(CreateProjectPageObject.prototype, "yourProjectButton", { - /** - * Get Your Project Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementContainingText('Go to Project'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "nextButton", { - /** - * Get Next Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Next'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "saveMyProject", { - /** - * Get Save My Project button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Save my project'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "formPageTitle", { - /** - * Get Current Form Page's title element - */ - get: function () { - var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('YAZHbL'); - return topcoder_testing_lib_1.ElementHelper.getElementByTag('h3', parentEl); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "headerSummary", { - /** - * Get Project Header Summary - */ - get: function () { - var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('form-header-summary'); - return topcoder_testing_lib_1.ElementHelper.getElementByTag('h2', parentEl); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "appNameInput", { - /** - * Get App Name Input - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('name'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "appDescriptionInput", { - /** - * Get App Description Input - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('description'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "draftProject", { - /** - * Get Draft Project title - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('IncompleteProjectConfirmation'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "createNewProject", { - /** - * Get Create new Project button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Create a new project'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "notesInput", { - /** - * Get Notes input field - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByName('details.apiDefinition.notes'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(CreateProjectPageObject.prototype, "subTitle", { - /** - * Get sub title - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementContainingText('Your project has been created'); - }, - enumerable: false, - configurable: true - }); - /** - * Wait for subtitle to show - */ - CreateProjectPageObject.prototype.waitForSubTitle = function () { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.waitUntilVisibilityOf(function () { return _this.subTitle; }, 'Wait for success message', true)]; - case 1: - _a.sent(); - logger_1.logger.info('Success Message Displayed'); - return [2 /*return*/]; - } - }); - }); - }; - return CreateProjectPageObject; -}()); -exports.CreateProjectPageObject = CreateProjectPageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3QucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L2NyZWF0ZS1wcm9qZWN0L2NyZWF0ZS1wcm9qZWN0LnBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBQzVELGlFQUErRDtBQUUvRDtJQUFBO0lBOElBLENBQUM7SUE3SUM7O09BRUc7SUFDaUIsNEJBQUksR0FBeEI7Ozs7NEJBQ0UscUJBQU0sb0NBQWEsQ0FBQyxJQUFJLENBQUMsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFBOzt3QkFBdkQsU0FBdUQsQ0FBQzt3QkFDeEQsZUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDOzs7OztLQUM1QztJQUtELHNCQUFXLHFEQUFnQjtRQUgzQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcseURBQW9CO1FBSC9COztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxrREFBYTtRQUh4Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEUsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyx5REFBb0I7UUFIL0I7O1dBRUc7YUFDSDtZQUNFLElBQU0sUUFBUSxHQUFHLG9DQUFhLENBQUMscUJBQXFCLENBQ2xELHVCQUF1QixDQUN4QixDQUFDO1lBQ0YsT0FBTyxvQ0FBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVB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 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js b/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js deleted file mode 100644 index 036883cbd..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.helper.js +++ /dev/null @@ -1,152 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.InviteCopilotHelper = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var common_helper_1 = require("../../common-page/common.helper"); -var invite_copilot_po_1 = require("./invite-copilot.po"); -var InviteCopilotHelper = /** @class */ (function () { - function InviteCopilotHelper() { - } - /** - * Initialize Invite Copilot page object - */ - InviteCopilotHelper.initialize = function () { - this.inviteCopilotPageObject = new invite_copilot_po_1.InviteCopilotPageObject(); - }; - /** - * Open Home Page - */ - InviteCopilotHelper.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, invite_copilot_po_1.InviteCopilotPageObject.open()]; - case 1: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify whether the Copilot Manager can invite to project - * @param copilotHandle copilot handle from test data - */ - InviteCopilotHelper.verifyManageProject = function (copilotHandle) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; - case 1: - _a.sent(); - return [4 /*yield*/, this.clickOnManageLink()]; - case 2: - _a.sent(); - return [4 /*yield*/, this.sendInvitationToCopilot(copilotHandle)]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Click on Manage link of Copilot Section of Left menu - */ - InviteCopilotHelper.clickOnManageLink = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.waitAndClickElement(this.inviteCopilotPageObject.manageCopilotLink)]; - case 1: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(2000)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Send the invitation to Copilot Manager - * @param copilotHandle copilot handle from test data - */ - InviteCopilotHelper.sendInvitationToCopilot = function (copilotHandle) { - return __awaiter(this, void 0, void 0, function () { - var inputField, alertElement, _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - inputField = this.inviteCopilotPageObject.inviteInputField; - return [4 /*yield*/, this.inviteCopilotPageObject.dropdownElement.click()]; - case 1: - _b.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(200)]; - case 2: - _b.sent(); - return [4 /*yield*/, inputField.sendKeys(copilotHandle)]; - case 3: - _b.sent(); - return [4 /*yield*/, this.inviteCopilotPageObject.selectedOption.click()]; - case 4: - _b.sent(); - return [4 /*yield*/, this.inviteCopilotPageObject.sendInviteButton.click()]; - case 5: - _b.sent(); - alertElement = common_helper_1.CommonHelper.alertBox(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; - case 6: - _b.sent(); - _a = expect; - return [4 /*yield*/, common_helper_1.CommonHelper.successAlert().getText()]; - case 7: - _a.apply(void 0, [_b.sent()]).toBe("YOU'VE SUCCESSFULLY INVITED MEMBER(S)."); - return [2 /*return*/]; - } - }); - }); - }; - return InviteCopilotHelper; -}()); -exports.InviteCopilotHelper = InviteCopilotHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLWNvcGlsb3QuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9pbnZpdGUtY29waWxvdC9pbnZpdGUtY29waWxvdC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQXFEO0FBQ3JELGlFQUErRDtBQUMvRCx5REFBOEQ7QUFFOUQ7SUFBQTtJQXVEQSxDQUFDO0lBdERDOztPQUVHO0lBQ1csOEJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSwyQ0FBdUIsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNpQix3QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSwyQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQXBDLFNBQW9DLENBQUM7d0JBQ3JDLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7Ozs7O0tBRTNDO0lBRUQ7OztPQUdHO0lBQ2lCLHVDQUFtQixHQUF2QyxVQUF3QyxhQUFxQjs7Ozs0QkFDM0QscUJBQU0sNEJBQVksQ0FBQywwQkFBMEIsRUFBRSxFQUFBOzt3QkFBL0MsU0FBK0MsQ0FBQzt3QkFDaEQscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUE7O3dCQUE5QixTQUE4QixDQUFDO3dCQUMvQixxQkFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLEVBQUE7O3dCQUFqRCxTQUFpRCxDQUFDOzs7OztLQUNuRDtJQUlEOztPQUVHO0lBQ2tCLHFDQUFpQixHQUF0Qzs7Ozs0QkFDRSxxQkFBTSw0QkFBWSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFBOzt3QkFBdEYsU0FBc0YsQ0FBQzt3QkFDdkYscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUEvQixTQUErQixDQUFDOzs7OztLQUNqQztJQUVEOzs7T0FHRztJQUNrQiwyQ0FBdUIsR0FBNUMsVUFBNkMsYUFBcUI7Ozs7Ozt3QkFDMUQsVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDakUscUJBQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQTFELFNBQTBELENBQUM7d0JBQzNELHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFDL0IscUJBQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBQTs7d0JBQXhDLFNBQXdDLENBQUM7d0JBQ3pDLHFCQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUF6RCxTQUF5RCxDQUFDO3dCQUMxRCxxQkFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUE7O3dCQUEzRCxTQUEyRCxDQUFDO3dCQUN0RCxZQUFZLEdBQUcsNEJBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDN0MscUJBQU0sNEJBQVksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsRUFBQTs7d0JBQXBELFNBQW9ELENBQUM7d0JBRXJELEtBQUEsTUFBTSxDQUFBO3dCQUFDLHFCQUFNLDRCQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dCQUFsRCxrQkFBTyxTQUEyQyxFQUFDLENBQUMsSUFBSSxDQUN0RCx3Q0FBd0MsQ0FDekMsQ0FBQzs7Ozs7S0FDSDtJQUNILDBCQUFDO0FBQUQsQ0FBQyxBQXZERCxJQXVEQztBQXZEWSxrREFBbUIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js b/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js deleted file mode 100644 index d8d49d472..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/invite-copilot/invite-copilot.po.js +++ /dev/null @@ -1,127 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.InviteCopilotPageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var logger_1 = require("../../../logger/logger"); -var config_helper_1 = require("../../../utils/config-helper"); -var InviteCopilotPageObject = /** @class */ (function () { - function InviteCopilotPageObject() { - } - /** - * Open Home page - */ - InviteCopilotPageObject.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getHomePageUrl())]; - case 1: - _a.sent(); - logger_1.logger.info('User navigated to Home Page'); - return [2 /*return*/]; - } - }); - }); - }; - Object.defineProperty(InviteCopilotPageObject.prototype, "manageCopilotLink", { - /** - * Get Manage Copilot Link From Left Menu - */ - get: function () { - var copilotDiv = topcoder_testing_lib_1.ElementHelper.getElementByCssContainingText('span._1hKIoG', 'Copilot'); - return topcoder_testing_lib_1.ElementHelper.getElementByXPath('following-sibling::span', copilotDiv); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(InviteCopilotPageObject.prototype, "dropdownElement", { - /** - * Get Copilot invitation dropdown element - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('react-select__placeholder'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(InviteCopilotPageObject.prototype, "inviteInputField", { - /** - * Get Copilot invitation input field - */ - get: function () { - var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('react-select__input'); - return topcoder_testing_lib_1.ElementHelper.getElementByTag('input', parentEl); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(InviteCopilotPageObject.prototype, "selectedOption", { - /** - * Get Selected option element from dropdown - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('react-select__option--is-focused'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(InviteCopilotPageObject.prototype, "sendInviteButton", { - /** - * Get Send Invite button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Send Invite'); - }, - enumerable: false, - configurable: true - }); - /** - * Get Invited Copilots List Elements - */ - InviteCopilotPageObject.prototype.invitedCopilots = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('span-name')]; - }); - }); - }; - return InviteCopilotPageObject; -}()); -exports.InviteCopilotPageObject = InviteCopilotPageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLWNvcGlsb3QucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L2ludml0ZS1jb3BpbG90L2ludml0ZS1jb3BpbG90LnBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBRTVEO0lBQUE7SUE2REEsQ0FBQztJQTVEQzs7T0FFRztJQUNpQiw0QkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxvQ0FBYSxDQUFDLElBQUksQ0FBQyw0QkFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUE7O3dCQUF2RCxTQUF1RCxDQUFDO3dCQUN4RCxlQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7Ozs7O0tBQzVDO0lBS0Qsc0JBQVcsc0RBQWlCO1FBSDVCOztXQUVHO2FBQ0g7WUFDRSxJQUFNLFVBQVUsR0FBRyxvQ0FBYSxDQUFDLDZCQUE2QixDQUM1RCxjQUFjLEVBQ2QsU0FBUyxDQUNWLENBQUM7WUFFRixPQUFPLG9DQUFhLENBQUMsaUJBQWlCLENBQ3BDLHlCQUF5QixFQUN6QixVQUFVLENBQ1gsQ0FBQztRQUNKLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsb0RBQWU7UUFIMUI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzFFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcscURBQWdCO1FBSDNCOztXQUVHO2FBQ0g7WUFDRSxJQUFNLFFBQVEsR0FBRyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDNUUsT0FBTyxvQ0FBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxtREFBYztRQUh6Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUN4QyxrQ0FBa0MsQ0FDbkMsQ0FBQztRQUNKLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcscURBQWdCO1FBSDNCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLGlEQUFlLEdBQTVCOzs7Z0JBQ0Usc0JBQU8sb0NBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsRUFBQzs7O0tBQzdEO0lBQ0gsOEJBQUM7QUFBRCxDQUFDLEFBN0RELElBNkRDO0FBN0RZLDBEQUF1QiJ9 \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js deleted file mode 100644 index 968390905..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.helper.js +++ /dev/null @@ -1,333 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ProjectsHelper = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var common_helper_1 = require("../../common-page/common.helper"); -var projects_po_1 = require("./projects.po"); -var ProjectsHelper = /** @class */ (function () { - function ProjectsHelper() { - } - /** - * Initialize Projects page object - */ - ProjectsHelper.initialize = function () { - this.projectsPageObject = new projects_po_1.ProjectsPageObject(); - }; - /** - * Opens the Create Project page - */ - ProjectsHelper.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, projects_po_1.ProjectsPageObject.open()]; - case 1: - _a.sent(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForPageDisplayed()]; - case 2: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(4000)]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify whether the Copilot can Join the project - */ - ProjectsHelper.verifyCopilotProjectJoin = function () { - return __awaiter(this, void 0, void 0, function () { - var alertElement, _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - // Go to Recently created project - return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; - case 1: - // Go to Recently created project - _b.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(4000)]; - case 2: - _b.sent(); - // Click on Join Project button - return [4 /*yield*/, this.projectsPageObject.joinProjectButton.click()]; - case 3: - // Click on Join Project button - _b.sent(); - alertElement = common_helper_1.CommonHelper.alertBox(); - return [4 /*yield*/, common_helper_1.CommonHelper.waitForSuccessAlert(alertElement)]; - case 4: - _b.sent(); - // Verify Success Alert - _a = expect; - return [4 /*yield*/, common_helper_1.CommonHelper.successAlert().getText()]; - case 5: - // Verify Success Alert - _a.apply(void 0, [_b.sent()]).toBe("YOU'VE SUCCESSFULLY JOINED THE PROJECT."); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify user can search for projects using project name, user handle, ref code - * @param searchProject object for search - */ - ProjectsHelper.verifyProjectSearch = function (searchProject) { - return __awaiter(this, void 0, void 0, function () { - var allProjectsBeforeSearch, beforeSearchLength, firstProjectBeforeSearch, allProjectsAfterSearch, _a, _b; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(3000)]; - case 1: - _c.sent(); - return [4 /*yield*/, this.projectsPageObject.projectTitles()]; - case 2: - allProjectsBeforeSearch = _c.sent(); - beforeSearchLength = allProjectsBeforeSearch.length; - return [4 /*yield*/, allProjectsBeforeSearch[0].getText()]; - case 3: - firstProjectBeforeSearch = _c.sent(); - // Search by project name - return [4 /*yield*/, this.projectsPageObject.fillSearchBar(searchProject.searchByName)]; - case 4: - // Search by project name - _c.sent(); - return [4 /*yield*/, this.verifyAllProjects(searchProject.searchByName)]; - case 5: - _c.sent(); - return [4 /*yield*/, this.clickCancelButton()]; - case 6: - _c.sent(); - // Search by Ref - return [4 /*yield*/, this.projectsPageObject.fillSearchBar(searchProject.searchByRef)]; - case 7: - // Search by Ref - _c.sent(); - return [4 /*yield*/, this.verifyProjectWithRef(searchProject.searchByRef)]; - case 8: - _c.sent(); - // Click on Clear button - return [4 /*yield*/, this.clickCancelButton()]; - case 9: - // Click on Clear button - _c.sent(); - // Search by Handle - return [4 /*yield*/, this.projectsPageObject.fillSearchBar(searchProject.searchByHandle)]; - case 10: - // Search by Handle - _c.sent(); - return [4 /*yield*/, this.verifyProjectSearchByHandle(searchProject.searchByHandle)]; - case 11: - _c.sent(); - return [4 /*yield*/, this.clickCancelButton()]; - case 12: - _c.sent(); - return [4 /*yield*/, this.projectsPageObject.projectTitles()]; - case 13: - allProjectsAfterSearch = _c.sent(); - expect(beforeSearchLength).toEqual(allProjectsAfterSearch.length); - _b = (_a = expect(firstProjectBeforeSearch)).toEqual; - return [4 /*yield*/, allProjectsAfterSearch[0].getText()]; - case 14: - _b.apply(_a, [_c.sent()]); - return [2 /*return*/]; - } - }); - }); - }; - /** - * verify user can switch between the Project tabs - */ - ProjectsHelper.verifySwitchTabs = function () { - return __awaiter(this, void 0, void 0, function () { - var tabNames, expectedLinkStatuses; - var _this = this; - return __generator(this, function (_a) { - tabNames = [ - 'Active', - 'In review', - 'Reviewed', - 'Completed', - 'Cancelled', - 'Paused', - 'All Projects', - ]; - expectedLinkStatuses = [ - 'active', - 'in_review', - 'reviewed', - 'completed', - 'cancelled', - 'paused', - '', - ]; - tabNames.map(function (currentTab, index) { return __awaiter(_this, void 0, void 0, function () { - var activeTab, currentUrl; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; - case 1: - _a.sent(); - return [4 /*yield*/, this.projectsPageObject.tabElement(currentTab)]; - case 2: - activeTab = _a.sent(); - return [4 /*yield*/, activeTab.click()]; - case 3: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; - case 4: - currentUrl = _a.sent(); - expect(currentUrl).toContain(expectedLinkStatuses[index]); - return [2 /*return*/]; - } - }); - }); }); - return [2 /*return*/]; - }); - }); - }; - /** - * Verify all projects - * @param searchTerm search term - */ - ProjectsHelper.verifyAllProjects = function (searchTerm) { - return __awaiter(this, void 0, void 0, function () { - var searchResultElements; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.projectsPageObject.projectTitles()]; - case 1: - searchResultElements = _a.sent(); - searchResultElements.map(function (project) { return __awaiter(_this, void 0, void 0, function () { - var projectName; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, project.getText()]; - case 1: - projectName = _a.sent(); - expect(projectName.toLowerCase()).toContain(searchTerm); - return [2 /*return*/]; - } - }); - }); }); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify projects with ref - * @param searchTerm search term - */ - ProjectsHelper.verifyProjectWithRef = function (searchTerm) { - return __awaiter(this, void 0, void 0, function () { - var ref; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.projectsPageObject.refText.getText()]; - case 1: - ref = _a.sent(); - expect(ref).toBe(searchTerm); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Click on clear button - */ - ProjectsHelper.clickCancelButton = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.projectsPageObject.clearButton.click()]; - case 1: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; - case 2: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Verify project search results by handle - * @param memberHandle member handle from test data - */ - ProjectsHelper.verifyProjectSearchByHandle = function (memberHandle) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; - case 1: - _b.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.waitUntilVisibilityOf(this.projectsPageObject.firstMember)]; - case 2: - _b.sent(); - _a = expect; - return [4 /*yield*/, this.projectsPageObject.firstMember.getText()]; - case 3: - _a.apply(void 0, [_b.sent()]).toBe(memberHandle); - return [4 /*yield*/, this.projectsPageObject.backButton.click()]; - case 4: - _b.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; - case 5: - _b.sent(); - return [2 /*return*/]; - } - }); - }); - }; - return ProjectsHelper; -}()); -exports.ProjectsHelper = ProjectsHelper; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFnZS1vYmplY3RzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9wcm9qZWN0cy9wcm9qZWN0cy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsNkRBQXFEO0FBQ3JELGlFQUErRDtBQUUvRCw2Q0FBbUQ7QUFFbkQ7SUFBQTtJQXdKQSxDQUFDO0lBdkpDOztPQUVHO0lBQ1cseUJBQVUsR0FBeEI7UUFDRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxnQ0FBa0IsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNpQixtQkFBSSxHQUF4Qjs7Ozs0QkFDRSxxQkFBTSxnQ0FBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7d0JBQS9CLFNBQStCLENBQUM7d0JBQ2hDLHFCQUFNLDRCQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQXpDLFNBQXlDLENBQUM7d0JBQzFDLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFFRDs7T0FFRztJQUNpQix1Q0FBd0IsR0FBNUM7Ozs7OztvQkFDRSxpQ0FBaUM7b0JBQ2pDLHFCQUFNLDRCQUFZLENBQUMsMEJBQTBCLEVBQUUsRUFBQTs7d0JBRC9DLGlDQUFpQzt3QkFDakMsU0FBK0MsQ0FBQzt3QkFDaEQscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUEvQixTQUErQixDQUFDO3dCQUVoQywrQkFBK0I7d0JBQy9CLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBRHZELCtCQUErQjt3QkFDL0IsU0FBdUQsQ0FBQzt3QkFDbEQsWUFBWSxHQUFHLDRCQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQzdDLHFCQUFNLDRCQUFZLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLEVBQUE7O3dCQUFwRCxTQUFvRCxDQUFDO3dCQUVyRCx1QkFBdUI7d0JBQ3ZCLEtBQUEsTUFBTSxDQUFBO3dCQUFDLHFCQUFNLDRCQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dCQURsRCx1QkFBdUI7d0JBQ3ZCLGtCQUFPLFNBQTJDLEVBQUMsQ0FBQyxJQUFJLENBQ3RELHlDQUF5QyxDQUMxQyxDQUFDOzs7OztLQUNIO0lBRUQ7OztPQUdHO0lBQ2lCLGtDQUFtQixHQUF2QyxVQUF3QyxhQUE2Qjs7Ozs7NEJBQ25FLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzt3QkFDQSxxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLEVBQUE7O3dCQUF2RSx1QkFBdUIsR0FBRyxTQUE2Qzt3QkFDdkUsa0JBQWtCLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDO3dCQUN6QixxQkFBTSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQTs7d0JBQXJFLHdCQUF3QixHQUFHLFNBQTBDO3dCQUUzRSx5QkFBeUI7d0JBQ3pCLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFBOzt3QkFEdkUseUJBQXlCO3dCQUN6QixTQUF1RSxDQUFDO3dCQUN4RSxxQkFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFBOzt3QkFBeEQsU0FBd0QsQ0FBQzt3QkFDekQscUJBQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUE7O3dCQUE5QixTQUE4QixDQUFDO3dCQUUvQixnQkFBZ0I7d0JBQ2hCLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFBOzt3QkFEdEUsZ0JBQWdCO3dCQUNoQixTQUFzRSxDQUFDO3dCQUN2RSxxQkFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFBOzt3QkFBMUQsU0FBMEQsQ0FBQzt3QkFFM0Qsd0JBQXdCO3dCQUN4QixxQkFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBQTs7d0JBRDlCLHdCQUF3Qjt3QkFDeEIsU0FBOEIsQ0FBQzt3QkFFL0IsbUJBQW1CO3dCQUNuQixxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBQTs7d0JBRHpFLG1CQUFtQjt3QkFDbkIsU0FBeUUsQ0FBQzt3QkFDMUUscUJBQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBQTs7d0JBQXBFLFNBQW9FLENBQUM7d0JBQ3JFLHFCQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFBOzt3QkFBOUIsU0FBOEIsQ0FBQzt3QkFFQSxxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLEVBQUE7O3dCQUF0RSxzQkFBc0IsR0FBRyxTQUE2Qzt3QkFFNUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUVsRSxLQUFBLENBQUEsS0FBQSxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQSxDQUFDLE9BQU8sQ0FBQTt3QkFDdEMscUJBQU0sc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dCQUQzQyxjQUNFLFNBQXlDLEVBQzFDLENBQUM7Ozs7O0tBQ0g7SUFFRDs7T0FFRztJQUNpQiwrQkFBZ0IsR0FBcEM7Ozs7O2dCQUNRLFFBQVEsR0FBRztvQkFDZixRQUFRO29CQUNSLFdBQVc7b0JBQ1gsVUFBVTtvQkFDVixXQUFXO29CQUNYLFdBQVc7b0JBQ1gsUUFBUTtvQkFDUixjQUFjO2lCQUNmLENBQUM7Z0JBRUksb0JBQW9CLEdBQUc7b0JBQzNCLFFBQVE7b0JBQ1IsV0FBVztvQkFDWCxVQUFVO29CQUNWLFdBQVc7b0JBQ1gsV0FBVztvQkFDWCxRQUFRO29CQUNSLEVBQUU7aUJBQ0gsQ0FBQztnQkFFRixRQUFRLENBQUMsR0FBRyxDQUFDLFVBQU8sVUFBVSxFQUFFLEtBQUs7Ozs7b0NBQ25DLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOztnQ0FBL0IsU0FBK0IsQ0FBQztnQ0FDZCxxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFBOztnQ0FBaEUsU0FBUyxHQUFHLFNBQW9EO2dDQUN0RSxxQkFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUE7O2dDQUF2QixTQUF1QixDQUFDO2dDQUNMLHFCQUFNLG9DQUFhLENBQUMsYUFBYSxFQUFFLEVBQUE7O2dDQUFoRCxVQUFVLEdBQUcsU0FBbUM7Z0NBQ3RELE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzs7OztxQkFDM0QsQ0FBQyxDQUFDOzs7O0tBQ0o7SUFJRDs7O09BR0c7SUFDa0IsZ0NBQWlCLEdBQXRDLFVBQXVDLFVBQWtCOzs7Ozs7NEJBQzFCLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsRUFBQTs7d0JBQXBFLG9CQUFvQixHQUFHLFNBQTZDO3dCQUMxRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBTyxPQUFPOzs7OzRDQUNqQixxQkFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dDQUFyQyxXQUFXLEdBQUcsU0FBdUI7d0NBQzNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7Ozs7NkJBQ3pELENBQUMsQ0FBQzt3QkFDSCxxQkFBTSxvQ0FBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQTs7d0JBQS9CLFNBQStCLENBQUM7Ozs7O0tBQ2pDO0lBRUQ7OztPQUdHO0lBQ2tCLG1DQUFvQixHQUF6QyxVQUEwQyxVQUFrQjs7Ozs7NEJBQzlDLHFCQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUE7O3dCQUFyRCxHQUFHLEdBQUcsU0FBK0M7d0JBQzNELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBRTdCLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFFRDs7T0FFRztJQUNrQixnQ0FBaUIsR0FBdEM7Ozs7NEJBQ0UscUJBQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQWpELFNBQWlELENBQUM7d0JBQ2xELHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFFRDs7O09BR0c7SUFDa0IsMENBQTJCLEdBQWhELFVBQWlELFlBQW9COzs7Ozs0QkFDbkUscUJBQU0sNEJBQVksQ0FBQywwQkFBMEIsRUFBRSxFQUFBOzt3QkFBL0MsU0FBK0MsQ0FBQzt3QkFDaEQscUJBQU0sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUE7O3dCQUE5RSxTQUE4RSxDQUFDO3dCQUMvRSxLQUFBLE1BQU0sQ0FBQTt3QkFBQyxxQkFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFBOzt3QkFBMUQsa0JBQU8sU0FBbUQsRUFBQyxDQUFDLElBQUksQ0FDOUQsWUFBWSxDQUNiLENBQUM7d0JBQ0YscUJBQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBQTs7d0JBQWhELFNBQWdELENBQUM7d0JBQ2pELHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzs7Ozs7S0FDakM7SUFDSCxxQkFBQztBQUFELENBQUMsQUF4SkQsSUF3SkM7QUF4Slksd0NBQWMifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js deleted file mode 100644 index 5aeb23354..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.model.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L3Byb2plY3RzL3Byb2plY3RzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js b/connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js deleted file mode 100644 index 49c687445..000000000 --- a/connect-automation/temp/page-objects/project-creation-flow/projects/projects.po.js +++ /dev/null @@ -1,207 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ProjectsPageObject = void 0; -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var logger_1 = require("../../../logger/logger"); -var config_helper_1 = require("../../../utils/config-helper"); -var common_helper_1 = require("../../common-page/common.helper"); -var ProjectsPageObject = /** @class */ (function () { - function ProjectsPageObject() { - } - /** - * Open the Home page - */ - ProjectsPageObject.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.open(config_helper_1.ConfigHelper.getHomePageUrl())]; - case 1: - _a.sent(); - logger_1.logger.info('User navigated to Home Page'); - return [2 /*return*/]; - } - }); - }); - }; - Object.defineProperty(ProjectsPageObject.prototype, "joinProjectButton", { - /** - * Get Join Project Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByButtonText('Join project'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ProjectsPageObject.prototype, "searchInput", { - /** - * Get Search Input - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('search-bar__text'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ProjectsPageObject.prototype, "searchButton", { - /** - * Get Search Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('search-icon-wrap'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ProjectsPageObject.prototype, "clearButton", { - /** - * Get Clear Button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('search-bar__clear'); - }, - enumerable: false, - configurable: true - }); - /** - * Get All Projects By Title - */ - ProjectsPageObject.prototype.projectTitles = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('link-title')]; - }); - }); - }; - /** - * Fill search bar with desired input - * @param inputText input text - */ - ProjectsPageObject.prototype.fillSearchBar = function (inputText) { - return __awaiter(this, void 0, void 0, function () { - var searchInput; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - searchInput = this.searchInput; - return [4 /*yield*/, common_helper_1.CommonHelper.fillInputField(searchInput, inputText)]; - case 1: - _a.sent(); - return [4 /*yield*/, this.searchButton.click()]; - case 2: - _a.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(1000)]; - case 3: - _a.sent(); - return [2 /*return*/]; - } - }); - }); - }; - /** - * Get Tab Element - * @param tabName tab name - */ - ProjectsPageObject.prototype.tabElement = function (tabName) { - return __awaiter(this, void 0, void 0, function () { - var parentEl; - return __generator(this, function (_a) { - parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('_3M4SZg'); - return [2 /*return*/, topcoder_testing_lib_1.ElementHelper.getElementByCssContainingText('li._2ZbGEn', tabName, parentEl)]; - }); - }); - }; - Object.defineProperty(ProjectsPageObject.prototype, "projectDashboard", { - /** - * Get Project Dashboard Element - */ - get: function () { - var parentEl = topcoder_testing_lib_1.ElementHelper.getElementByClassName('WtXOeL _3rjDL1'); - return topcoder_testing_lib_1.ElementHelper.getElementContainingText('Dashboard', parentEl); - }, - enumerable: false, - configurable: true - }); - /** - * Get Active Tab Element - */ - ProjectsPageObject.prototype.activeTab = function () { - return __awaiter(this, void 0, void 0, function () { - var tabNames; - return __generator(this, function (_a) { - tabNames = topcoder_testing_lib_1.ElementHelper.getAllElementsByClassName('_2ZbGEn E7SY3s'); - return [2 /*return*/, tabNames[0]]; - }); - }); - }; - Object.defineProperty(ProjectsPageObject.prototype, "firstMember", { - /** - * Get first member's element - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('GV60ta'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ProjectsPageObject.prototype, "backButton", { - /** - * Get back to dashboard button - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('_3Ielx-'); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ProjectsPageObject.prototype, "refText", { - /** - * Get ref containing element - */ - get: function () { - return topcoder_testing_lib_1.ElementHelper.getElementByClassName('txt-gray-md'); - }, - enumerable: false, - configurable: true - }); - return ProjectsPageObject; -}()); -exports.ProjectsPageObject = ProjectsPageObject; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMucG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWdlLW9iamVjdHMvcHJvamVjdC1jcmVhdGlvbi1mbG93L3Byb2plY3RzL3Byb2plY3RzLnBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUFvRTtBQUNwRSxpREFBZ0Q7QUFDaEQsOERBQTREO0FBQzVELGlFQUErRDtBQUUvRDtJQUFBO0lBd0dBLENBQUM7SUF2R0M7O09BRUc7SUFDaUIsdUJBQUksR0FBeEI7Ozs7NEJBQ0UscUJBQU0sb0NBQWEsQ0FBQyxJQUFJLENBQUMsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFBOzt3QkFBdkQsU0FBdUQsQ0FBQzt3QkFDeEQsZUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDOzs7OztLQUM1QztJQUtELHNCQUFXLGlEQUFpQjtRQUg1Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlELENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsMkNBQVc7UUFIdEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsNENBQVk7UUFIdkI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsMkNBQVc7UUFIdEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7OztPQUFBO0lBRUQ7O09BRUc7SUFDVSwwQ0FBYSxHQUExQjs7O2dCQUNFLHNCQUFPLG9DQUFhLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLEVBQUM7OztLQUM5RDtJQUVEOzs7T0FHRztJQUNVLDBDQUFhLEdBQTFCLFVBQTJCLFNBQWlCOzs7Ozs7d0JBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO3dCQUNyQyxxQkFBTSw0QkFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUE7O3dCQUF6RCxTQUF5RCxDQUFDO3dCQUMxRCxxQkFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzt3QkFDaEMscUJBQU0sb0NBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUEvQixTQUErQixDQUFDOzs7OztLQUNqQztJQUVEOzs7T0FHRztJQUNVLHVDQUFVLEdBQXZCLFVBQXdCLE9BQWU7Ozs7Z0JBQy9CLFFBQVEsR0FBRyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoRSxzQkFBTyxvQ0FBYSxDQUFDLDZCQUE2QixDQUNoRCxZQUFZLEVBQ1osT0FBTyxFQUNQLFFBQVEsQ0FDVCxFQUFDOzs7S0FDSDtJQUtELHNCQUFXLGdEQUFnQjtRQUgzQjs7V0FFRzthQUNIO1lBQ0UsSUFBTSxRQUFRLEdBQUcsb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sb0NBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNVLHNDQUFTLEdBQXRCOzs7O2dCQUNRLFFBQVEsR0FBRyxvQ0FBYSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzNFLHNCQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQzs7O0tBQ3BCO0lBS0Qsc0JBQVcsMkNBQVc7UUFIdEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sb0NBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLDBDQUFVO1FBSHJCOztXQUVHO2FBQ0g7WUFDRSxPQUFPLG9DQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyx1Q0FBTztRQUhsQjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxvQ0FBYSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUM7OztPQUFBO0lBQ0gseUJBQUM7QUFBRCxDQUFDLEFBeEdELElBd0dDO0FBeEdZLGdEQUFrQiJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-data/test-data.json b/connect-automation/temp/test-data/test-data.json deleted file mode 100644 index bf7a971fe..000000000 --- a/connect-automation/temp/test-data/test-data.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "userProfile": { - "firstName": "John", - "lastName": "Doe", - "title": "programmer", - "country": "Nepal", - "countryCode": "+977", - "countryAbbr": "NPL", - "companyUrl": "www.topcoder.com", - "localTimezone": "Africa/Accra", - "startTime": "9:00", - "endTime": "18:00", - "businessPhoneCountry": "India", - "businessPhoneCountryCode": "+91" - }, - "projectData": { - "appName": "Automation", - "appDescription": "This project is created by automated test", - "answers": { - "beforeWeStart": "I am just exploring my options", - "whatDoYouNeed": "Development & QA", - "willYourAppNeedMoreScreen": "Yes", - "howManyScreens": "45-60 screens", - "whereShouldAppWork": "Web Browser", - "howShouldAppWorks": "I want a web app that is installable on desktops." - }, - "notes": "Notes from test" - }, - "inviteCopilot": { - "copilotHandle": "TCConnCopilot" - }, - "searchProject": { - "searchByName": "taas", - "searchByRef": "cjamedit", - "searchByHandle": "mailmemakar402" - }, - "phaseCreation": { - "formData": { - "title": "Dev Phase", - "daysBetweenStartAndEndDate": 3, - "reportName": "Reporting 1", - "deliverableReviewName": "Deliverable Review 1", - "finalDeliverableReviewName": "Final Deliverable Review 1" - } - } -} diff --git a/connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js b/connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js deleted file mode 100644 index facbc812b..000000000 --- a/connect-automation/temp/test-suites/phase-creation-flow/create-new-phase.spec.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var create_new_phase_helper_1 = require("../../page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper"); -var testData = require("../../test-data/test-data.json"); -var config_helper_1 = require("../../utils/config-helper"); -describe('Connect App - Create New Phase Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - var copilotUser; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - copilotUser = config_helper_1.ConfigHelper.getCopilotUser(); - return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotUser.email, copilotUser.password)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - create_new_phase_helper_1.CreateNewPhaseHelper.initialize(); - // Step Sequence #1: Go to the given app URL - return [4 /*yield*/, common_helper_1.CommonHelper.goToRecentlyCreatedProject()]; - case 1: - // Step Sequence #1: Go to the given app URL - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_001] should verify user can create a Phase and Publish it.', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, create_new_phase_helper_1.CreateNewPhaseHelper.verifyCreateNewPhase(testData.phaseCreation.formData)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW5ldy1waGFzZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC1zdWl0ZXMvcGhhc2UtY3JlYXRpb24tZmxvdy9jcmVhdGUtbmV3LXBoYXNlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RUFBNEU7QUFDNUUsMkhBQXVIO0FBQ3ZILHlEQUEyRDtBQUMzRCwyREFBeUQ7QUFFekQsUUFBUSxDQUFDLHVDQUF1QyxFQUFFO0lBQ2hEOztPQUVHO0lBQ0gsU0FBUyxDQUFDOzs7OztvQkFFRixXQUFXLEdBQUcsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDbEQscUJBQU0sNEJBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUE7O29CQUFqRSxTQUFpRSxDQUFDOzs7O1NBQ25FLENBQUMsQ0FBQztJQUVIOztPQUVHO0lBQ0gsUUFBUSxDQUFDOzs7d0JBQ1AscUJBQU0sNEJBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQTs7b0JBQTNCLFNBQTJCLENBQUM7Ozs7U0FDN0IsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDOzs7O29CQUNULDhDQUFvQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNsQyw0Q0FBNEM7b0JBQzVDLHFCQUFNLDRCQUFZLENBQUMsMEJBQTBCLEVBQUUsRUFBQTs7b0JBRC9DLDRDQUE0QztvQkFDNUMsU0FBK0MsQ0FBQzs7OztTQUNqRCxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUU7Ozt3QkFDbkUscUJBQU0sOENBQW9CLENBQUMsb0JBQW9CLENBQzdDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUNoQyxFQUFBOztvQkFGRCxTQUVDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/footer-menu.spec.js b/connect-automation/temp/test-suites/profile-update/footer-menu.spec.js deleted file mode 100644 index e03b938ad..000000000 --- a/connect-automation/temp/test-suites/profile-update/footer-menu.spec.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var footer_helper_1 = require("../../page-objects/profile-update/footer/footer.helper"); -var config_helper_1 = require("../../utils/config-helper"); -describe('Connect App - Footer Menu Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // Precondition: User should be logged in. - return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; - case 1: - // Precondition: User should be logged in. - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - // Initialize Footer Menu Helper - footer_helper_1.FooterHelper.initialize(); - return [2 /*return*/]; - }); - }); }); - it('[TC_006] should verify copyright year is displaying correctly.', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, footer_helper_1.FooterHelper.verifyCopyright()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLW1lbnUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2ZpbGUtdXBkYXRlL2Zvb3Rlci1tZW51LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RUFBNEU7QUFDNUUsd0ZBQXNGO0FBQ3RGLDJEQUF5RDtBQUV6RCxRQUFRLENBQUMsa0NBQWtDLEVBQUU7SUFDM0M7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7Z0JBQ1IsMENBQTBDO2dCQUMxQyxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FDdEIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsRUFDMUIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsQ0FDM0IsRUFBQTs7b0JBSkQsMENBQTBDO29CQUMxQyxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7WUFDVCxnQ0FBZ0M7WUFDaEMsNEJBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQzs7O1NBQzNCLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRTs7O3dCQUNuRSxxQkFBTSw0QkFBWSxDQUFDLGVBQWUsRUFBRSxFQUFBOztvQkFBcEMsU0FBb0MsQ0FBQzs7OztTQUN0QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/left-menu.spec.js b/connect-automation/temp/test-suites/profile-update/left-menu.spec.js deleted file mode 100644 index 4ca1da54b..000000000 --- a/connect-automation/temp/test-suites/profile-update/left-menu.spec.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var left_menu_helper_1 = require("../../page-objects/profile-update/left-menu/left-menu.helper"); -var config_helper_1 = require("../../utils/config-helper"); -var my_profile_helper_1 = require("../../page-objects/profile-update/my-profile/my-profile.helper"); -describe('Connect App - Left Menu Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // Precondition: User should be logged in. - return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; - case 1: - // Precondition: User should be logged in. - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - my_profile_helper_1.MyProfilePageHelper.initialize(); - left_menu_helper_1.LeftMenuPageHelper.initialize(); - return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.open()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_004] should verify whether the user can navigate the page successfully.', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyNotificationSettings()]; - case 1: - _a.sent(); - return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyProfileInformation()]; - case 2: - _a.sent(); - return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyAccountAndSecurity()]; - case 3: - _a.sent(); - return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyAllProjects()]; - case 4: - _a.sent(); - return [4 /*yield*/, left_menu_helper_1.LeftMenuPageHelper.verifyNotifications()]; - case 5: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVmdC1tZW51LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0LXN1aXRlcy9wcm9maWxlLXVwZGF0ZS9sZWZ0LW1lbnUuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhFQUE0RTtBQUM1RSxpR0FBa0c7QUFDbEcsMkRBQXlEO0FBQ3pELG9HQUFxRztBQUVyRyxRQUFRLENBQUMsZ0NBQWdDLEVBQUU7SUFDekM7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7Z0JBQ1IsMENBQTBDO2dCQUMxQyxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FDdEIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsRUFDMUIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsQ0FDM0IsRUFBQTs7b0JBSkQsMENBQTBDO29CQUMxQyxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7OztvQkFDVCx1Q0FBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDakMscUNBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hDLHFCQUFNLHVDQUFtQixDQUFDLElBQUksRUFBRSxFQUFBOztvQkFBaEMsU0FBZ0MsQ0FBQzs7OztTQUNsQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkVBQTZFLEVBQUU7Ozt3QkFDaEYscUJBQU0scUNBQWtCLENBQUMsMEJBQTBCLEVBQUUsRUFBQTs7b0JBQXJELFNBQXFELENBQUM7b0JBQ3RELHFCQUFNLHFDQUFrQixDQUFDLHdCQUF3QixFQUFFLEVBQUE7O29CQUFuRCxTQUFtRCxDQUFDO29CQUNwRCxxQkFBTSxxQ0FBa0IsQ0FBQyx3QkFBd0IsRUFBRSxFQUFBOztvQkFBbkQsU0FBbUQsQ0FBQztvQkFDcEQscUJBQU0scUNBQWtCLENBQUMsaUJBQWlCLEVBQUUsRUFBQTs7b0JBQTVDLFNBQTRDLENBQUM7b0JBQzdDLHFCQUFNLHFDQUFrQixDQUFDLG1CQUFtQixFQUFFLEVBQUE7O29CQUE5QyxTQUE4QyxDQUFDOzs7O1NBQ2hELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/my-profile.spec.js b/connect-automation/temp/test-suites/profile-update/my-profile.spec.js deleted file mode 100644 index 136351aef..000000000 --- a/connect-automation/temp/test-suites/profile-update/my-profile.spec.js +++ /dev/null @@ -1,116 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var testData = require("../../test-data/test-data.json"); -var config_helper_1 = require("../../utils/config-helper"); -var my_profile_helper_1 = require("../../page-objects/profile-update/my-profile/my-profile.helper"); -describe('Connect App - My Profile Page Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // Precondition: User should be logged in. - return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; - case 1: - // Precondition: User should be logged in. - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - my_profile_helper_1.MyProfilePageHelper.initialize(); - return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.open()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_001] should verify whether the current user can update the basic information.', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.verifyProfileInformation(testData.userProfile)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_002] should verify whether the Business Phone/Country sync accordingly.', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.verifyBusinessPhoneSync(testData.userProfile)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_003] should verify whether the user can close the profile window.', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, my_profile_helper_1.MyProfilePageHelper.verifyUserCloseProfileWindow()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktcHJvZmlsZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC1zdWl0ZXMvcHJvZmlsZS11cGRhdGUvbXktcHJvZmlsZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQTRFO0FBQzVFLHlEQUEyRDtBQUMzRCwyREFBeUQ7QUFDekQsb0dBQXFHO0FBRXJHLFFBQVEsQ0FBQyxzQ0FBc0MsRUFBRTtJQUMvQzs7T0FFRztJQUNILFNBQVMsQ0FBQzs7OztnQkFDUiwwQ0FBMEM7Z0JBQzFDLHFCQUFNLDRCQUFZLENBQUMsS0FBSyxDQUN0Qiw0QkFBWSxDQUFDLFdBQVcsRUFBRSxFQUMxQiw0QkFBWSxDQUFDLFdBQVcsRUFBRSxDQUMzQixFQUFBOztvQkFKRCwwQ0FBMEM7b0JBQzFDLFNBR0MsQ0FBQzs7OztTQUNILENBQUMsQ0FBQztJQUVIOztPQUVHO0lBQ0gsUUFBUSxDQUFDOzs7d0JBQ1AscUJBQU0sNEJBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQTs7b0JBQTNCLFNBQTJCLENBQUM7Ozs7U0FDN0IsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDOzs7O29CQUNULHVDQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNqQyxxQkFBTSx1Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7b0JBQWhDLFNBQWdDLENBQUM7Ozs7U0FDbEMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1GQUFtRixFQUFFOzs7d0JBQ3RGLHFCQUFNLHVDQUFtQixDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBQTs7b0JBQXhFLFNBQXdFLENBQUM7Ozs7U0FDMUUsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDZFQUE2RSxFQUFFOzs7d0JBQ2hGLHFCQUFNLHVDQUFtQixDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBQTs7b0JBQXZFLFNBQXVFLENBQUM7Ozs7U0FDekUsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVFQUF1RSxFQUFFOzs7d0JBQzFFLHFCQUFNLHVDQUFtQixDQUFDLDRCQUE0QixFQUFFLEVBQUE7O29CQUF4RCxTQUF3RCxDQUFDOzs7O1NBQzFELENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js b/connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js deleted file mode 100644 index 6f9c86ac7..000000000 --- a/connect-automation/temp/test-suites/profile-update/user-profile-menu.spec.js +++ /dev/null @@ -1,99 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var user_profile_menu_helper_1 = require("../../page-objects/profile-update/user-profile-menu/user-profile-menu.helper"); -var config_helper_1 = require("../../utils/config-helper"); -describe('Connect App - User Profile Menu Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - // Precondition: User should be logged in. - return [4 /*yield*/, common_helper_1.CommonHelper.login(config_helper_1.ConfigHelper.getUserName(), config_helper_1.ConfigHelper.getPassword())]; - case 1: - // Precondition: User should be logged in. - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - // Initialize User Profile Menu Helper - user_profile_menu_helper_1.UserProfileMenuHelper.initialize(); - return [2 /*return*/]; - }); - }); }); - it('[TC_005] should whether the user can navigate the page successfully from profile icon menu.', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyMyProfile()]; - case 1: - _a.sent(); - return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyNotificationSettings()]; - case 2: - _a.sent(); - return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyAccountAndSecurity()]; - case 3: - _a.sent(); - return [4 /*yield*/, user_profile_menu_helper_1.UserProfileMenuHelper.verifyLogout()]; - case 4: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLW1lbnUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2ZpbGUtdXBkYXRlL3VzZXItcHJvZmlsZS1tZW51LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RUFBNEU7QUFDNUUseUhBQXFIO0FBQ3JILDJEQUF5RDtBQUV6RCxRQUFRLENBQUMsd0NBQXdDLEVBQUU7SUFDakQ7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7Z0JBQ1IsMENBQTBDO2dCQUMxQyxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FDdEIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsRUFDMUIsNEJBQVksQ0FBQyxXQUFXLEVBQUUsQ0FDM0IsRUFBQTs7b0JBSkQsMENBQTBDO29CQUMxQyxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7WUFDVCxzQ0FBc0M7WUFDdEMsZ0RBQXFCLENBQUMsVUFBVSxFQUFFLENBQUM7OztTQUNwQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNkZBQTZGLEVBQUU7Ozt3QkFDaEcscUJBQU0sZ0RBQXFCLENBQUMsZUFBZSxFQUFFLEVBQUE7O29CQUE3QyxTQUE2QyxDQUFDO29CQUM5QyxxQkFBTSxnREFBcUIsQ0FBQywwQkFBMEIsRUFBRSxFQUFBOztvQkFBeEQsU0FBd0QsQ0FBQztvQkFDekQscUJBQU0sZ0RBQXFCLENBQUMsd0JBQXdCLEVBQUUsRUFBQTs7b0JBQXRELFNBQXNELENBQUM7b0JBQ3ZELHFCQUFNLGdEQUFxQixDQUFDLFlBQVksRUFBRSxFQUFBOztvQkFBMUMsU0FBMEMsQ0FBQzs7OztTQUM1QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js b/connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js deleted file mode 100644 index 081546f40..000000000 --- a/connect-automation/temp/test-suites/project-creation-flow/create-project.spec.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var create_project_helper_1 = require("../../page-objects/project-creation-flow/create-project/create-project.helper"); -var testData = require("../../test-data/test-data.json"); -var config_helper_1 = require("../../utils/config-helper"); -describe('Connect App - Create Project Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - var customerUser; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - customerUser = config_helper_1.ConfigHelper.getCustomerUser(); - return [4 /*yield*/, common_helper_1.CommonHelper.login(customerUser.email, customerUser.password)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - create_project_helper_1.CreateProjectPageHelper.initialize(); - // Step Sequence #1: Go to the given app URL - return [4 /*yield*/, create_project_helper_1.CreateProjectPageHelper.open()]; - case 1: - // Step Sequence #1: Go to the given app URL - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_001] should verify whether the current user can create a Design, Development & Deployment project', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, create_project_helper_1.CreateProjectPageHelper.verifyProjectCreation(testData.projectData)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2plY3Quc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9jcmVhdGUtcHJvamVjdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQTRFO0FBQzVFLHVIQUF3SDtBQUN4SCx5REFBMkQ7QUFDM0QsMkRBQXlEO0FBRXpELFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRTtJQUM5Qzs7T0FFRztJQUNILFNBQVMsQ0FBQzs7Ozs7b0JBRUYsWUFBWSxHQUFHLDRCQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3BELHFCQUFNLDRCQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFBOztvQkFBbkUsU0FBbUUsQ0FBQzs7OztTQUNyRSxDQUFDLENBQUM7SUFFSDs7T0FFRztJQUNILFFBQVEsQ0FBQzs7O3dCQUNQLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUEzQixTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILFVBQVUsQ0FBQzs7OztvQkFDVCwrQ0FBdUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDckMsNENBQTRDO29CQUM1QyxxQkFBTSwrQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBQTs7b0JBRHBDLDRDQUE0QztvQkFDNUMsU0FBb0MsQ0FBQzs7OztTQUN0QyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUdBQXVHLEVBQUU7Ozt3QkFDMUcscUJBQU0sK0NBQXVCLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFBOztvQkFBekUsU0FBeUUsQ0FBQzs7OztTQUMzRSxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js b/connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js deleted file mode 100644 index 3f7dcacbb..000000000 --- a/connect-automation/temp/test-suites/project-creation-flow/invite-copilot.spec.js +++ /dev/null @@ -1,98 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var invite_copilot_helper_1 = require("../../page-objects/project-creation-flow/invite-copilot/invite-copilot.helper"); -var testData = require("../../test-data/test-data.json"); -var config_helper_1 = require("../../utils/config-helper"); -describe('Connect App - Invite Copilot Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - var copilotManagerUser; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - copilotManagerUser = config_helper_1.ConfigHelper.getCopilotManagerUser(); - return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotManagerUser.email, copilotManagerUser.password)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - invite_copilot_helper_1.InviteCopilotHelper.initialize(); - // Step Sequence #1: Go to the given app URL - return [4 /*yield*/, invite_copilot_helper_1.InviteCopilotHelper.open()]; - case 1: - // Step Sequence #1: Go to the given app URL - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_002] should verify whether the Copilot Manager can invite to project', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, invite_copilot_helper_1.InviteCopilotHelper.verifyManageProject(testData.inviteCopilot.copilotHandle)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLWNvcGlsb3Quc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9pbnZpdGUtY29waWxvdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOEVBQTRFO0FBQzVFLHVIQUFvSDtBQUNwSCx5REFBMkQ7QUFDM0QsMkRBQXlEO0FBRXpELFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRTtJQUM5Qzs7T0FFRztJQUNILFNBQVMsQ0FBQzs7Ozs7b0JBRUYsa0JBQWtCLEdBQUcsNEJBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUNoRSxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUE7O29CQUEvRSxTQUErRSxDQUFDOzs7O1NBQ2pGLENBQUMsQ0FBQztJQUVIOztPQUVHO0lBQ0gsUUFBUSxDQUFDOzs7d0JBQ1AscUJBQU0sNEJBQVksQ0FBQyxNQUFNLEVBQUUsRUFBQTs7b0JBQTNCLFNBQTJCLENBQUM7Ozs7U0FDN0IsQ0FBQyxDQUFDO0lBRUgsVUFBVSxDQUFDOzs7O29CQUNULDJDQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNqQyw0Q0FBNEM7b0JBQzVDLHFCQUFNLDJDQUFtQixDQUFDLElBQUksRUFBRSxFQUFBOztvQkFEaEMsNENBQTRDO29CQUM1QyxTQUFnQyxDQUFDOzs7O1NBQ2xDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywwRUFBMEUsRUFBRTs7O3dCQUM3RSxxQkFBTSwyQ0FBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFBOztvQkFBbkYsU0FBbUYsQ0FBQzs7OztTQUNyRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/test-suites/project-creation-flow/projects.spec.js b/connect-automation/temp/test-suites/project-creation-flow/projects.spec.js deleted file mode 100644 index 0814f2eff..000000000 --- a/connect-automation/temp/test-suites/project-creation-flow/projects.spec.js +++ /dev/null @@ -1,136 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var topcoder_testing_lib_1 = require("topcoder-testing-lib"); -var common_helper_1 = require("../../page-objects/common-page/common.helper"); -var projects_helper_1 = require("../../page-objects/project-creation-flow/projects/projects.helper"); -var testData = require("../../test-data/test-data.json"); -var config_helper_1 = require("../../utils/config-helper"); -describe('Connect App - Copilot Role Project Related Tests:', function () { - /** - * Sets up the browser - */ - beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () { - var copilotUser; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - copilotUser = config_helper_1.ConfigHelper.getCopilotUser(); - return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotUser.email, copilotUser.password)]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - /** - * Logs out - */ - afterAll(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - projects_helper_1.ProjectsHelper.initialize(); - // Step Sequence #1: Go to the given app URL - return [4 /*yield*/, projects_helper_1.ProjectsHelper.open()]; - case 1: - // Step Sequence #1: Go to the given app URL - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_003] should verify whether the Copilot can Join the project', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, projects_helper_1.ProjectsHelper.verifyCopilotProjectJoin()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_004] should verify user can search for projects using project name, user handle, ref code', function () { return __awaiter(void 0, void 0, void 0, function () { - var _a, copilotManagerUser; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, projects_helper_1.ProjectsHelper.verifyProjectSearch(testData.searchProject)]; - case 1: - _b.sent(); - // Logout from current user. - return [4 /*yield*/, common_helper_1.CommonHelper.logout()]; - case 2: - // Logout from current user. - _b.sent(); - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.sleep(5000)]; - case 3: - _b.sent(); - _a = expect; - return [4 /*yield*/, topcoder_testing_lib_1.BrowserHelper.getCurrentUrl()]; - case 4: - _a.apply(void 0, [_b.sent()]).toBe(config_helper_1.ConfigHelper.getHomePageUrl()); - copilotManagerUser = config_helper_1.ConfigHelper.getCopilotUser(); - return [4 /*yield*/, common_helper_1.CommonHelper.login(copilotManagerUser.email, copilotManagerUser.password)]; - case 5: - _b.sent(); - return [2 /*return*/]; - } - }); - }); }); - it('[TC_005] should verify user can switch between the Project tabs', function () { return __awaiter(void 0, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, projects_helper_1.ProjectsHelper.verifySwitchTabs()]; - case 1: - _a.sent(); - return [2 /*return*/]; - } - }); - }); }); -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3Qtc3VpdGVzL3Byb2plY3QtY3JlYXRpb24tZmxvdy9wcm9qZWN0cy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQXFEO0FBQ3JELDhFQUE0RTtBQUM1RSxxR0FBbUc7QUFDbkcseURBQTJEO0FBQzNELDJEQUF5RDtBQUV6RCxRQUFRLENBQUMsbURBQW1ELEVBQUU7SUFDNUQ7O09BRUc7SUFDSCxTQUFTLENBQUM7Ozs7O29CQUVGLFdBQVcsR0FBRyw0QkFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNsRCxxQkFBTSw0QkFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBQTs7b0JBQWpFLFNBQWlFLENBQUM7Ozs7U0FDbkUsQ0FBQyxDQUFDO0lBRUg7O09BRUc7SUFDSCxRQUFRLENBQUM7Ozt3QkFDUCxxQkFBTSw0QkFBWSxDQUFDLE1BQU0sRUFBRSxFQUFBOztvQkFBM0IsU0FBMkIsQ0FBQzs7OztTQUM3QixDQUFDLENBQUM7SUFFSCxVQUFVLENBQUM7Ozs7b0JBQ1QsZ0NBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFFNUIsNENBQTRDO29CQUM1QyxxQkFBTSxnQ0FBYyxDQUFDLElBQUksRUFBRSxFQUFBOztvQkFEM0IsNENBQTRDO29CQUM1QyxTQUEyQixDQUFDOzs7O1NBQzdCLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpRUFBaUUsRUFBRTs7O3dCQUNwRSxxQkFBTSxnQ0FBYyxDQUFDLHdCQUF3QixFQUFFLEVBQUE7O29CQUEvQyxTQUErQyxDQUFDOzs7O1NBQ2pELENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrRkFBK0YsRUFBRTs7Ozt3QkFDbEcscUJBQU0sZ0NBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUE7O29CQUFoRSxTQUFnRSxDQUFDO29CQUVqRSw0QkFBNEI7b0JBQzVCLHFCQUFNLDRCQUFZLENBQUMsTUFBTSxFQUFFLEVBQUE7O29CQUQzQiw0QkFBNEI7b0JBQzVCLFNBQTJCLENBQUM7b0JBQzVCLHFCQUFNLG9DQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBOztvQkFBL0IsU0FBK0IsQ0FBQztvQkFDaEMsS0FBQSxNQUFNLENBQUE7b0JBQUMscUJBQU0sb0NBQWEsQ0FBQyxhQUFhLEVBQUUsRUFBQTs7b0JBQTFDLGtCQUFPLFNBQW1DLEVBQUMsQ0FBQyxJQUFJLENBQzlDLDRCQUFZLENBQUMsY0FBYyxFQUFFLENBQzlCLENBQUM7b0JBRUksa0JBQWtCLEdBQUcsNEJBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDekQscUJBQU0sNEJBQVksQ0FBQyxLQUFLLENBQ3RCLGtCQUFrQixDQUFDLEtBQUssRUFDeEIsa0JBQWtCLENBQUMsUUFBUSxDQUM1QixFQUFBOztvQkFIRCxTQUdDLENBQUM7Ozs7U0FDSCxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUU7Ozt3QkFDcEUscUJBQU0sZ0NBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFBOztvQkFBdkMsU0FBdUMsQ0FBQzs7OztTQUN6QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/connect-automation/temp/utils/config-helper.js b/connect-automation/temp/utils/config-helper.js deleted file mode 100644 index 73bf36f5b..000000000 --- a/connect-automation/temp/utils/config-helper.js +++ /dev/null @@ -1,97 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConfigHelper = void 0; -var config = require("../config/config.json"); -exports.ConfigHelper = { - /** - * Get current config - */ - getConfig: function () { - return config; - }, - /** - * Get login URL - */ - getLoginUrl: function () { - return this.getConfig().loginUrl; - }, - /** - * Get homepage URL - */ - getHomePageUrl: function () { - return this.getConfig().homePageUrl; - }, - /** - * Get Redirected login URL - */ - getRedirectLoginUrl: function () { - return this.getConfig().redirectLoginUrl; - }, - /** - * Get logout URL - */ - getLogoutUrl: function () { - return this.getConfig().logoutUrl; - }, - /** - * Get Username - */ - getUserName: function () { - return this.getConfig().username; - }, - /** - * Get Password - */ - getPassword: function () { - return this.getConfig().password; - }, - /** - * Get My Profile Page Url - */ - getMyProfileUrl: function () { - return this.getConfig().myProfileUrl; - }, - /** - * Get Notification Settings Page Url - */ - getNotificationSettingsUrl: function () { - return this.getConfig().notificationSettingsUrl; - }, - /** - * Get Account & Security Page Url - */ - getAccountAndSecurityUrl: function () { - return this.getConfig().accountAndSecurityUrl; - }, - /** - * Get Notification Settings Page Url - */ - getNotificationUrl: function () { - return this.getConfig().notificationsUrl; - }, - /** - * Get All Projects Page Url - */ - getAllProjectsUrl: function () { - return this.getConfig().allProjectsUrl; - }, - /** - * Gets email, password of customer user - */ - getCustomerUser: function () { - return this.getConfig().customerRole; - }, - /** - * Gets email, password of copilot user - */ - getCopilotUser: function () { - return this.getConfig().copilotRole; - }, - /** - * Gets email, password of copilot manager user - */ - getCopilotManagerUser: function () { - return this.getConfig().copilotManagerRole; - }, -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3V0aWxzL2NvbmZpZy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQWdEO0FBRW5DLFFBQUEsWUFBWSxHQUFHO0lBQzFCOztPQUVHO0lBQ0gsU0FBUztRQUNQLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxFQUFkO1FBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQzdDLENBQUM7Q0FDRixDQUFDIn0= \ No newline at end of file From 6f71fe4118562dfa029c5024e28c28ac9b2e64bc Mon Sep 17 00:00:00 2001 From: Deepak Thapa Date: Mon, 31 May 2021 10:18:47 +0545 Subject: [PATCH 03/24] update git ignore file --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index fc1a6b0c2..1c8ace736 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ npm-debug.log .history .build-info .idea + +# e2e test case +connect-automation/temp +connect-automation/test-results From 04fa2e24b2bf8c8f932ceeca0187f671c3dfcff9 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 13:21:24 +0300 Subject: [PATCH 04/24] CirecleCI smoke test config --- .circleci/config.yml | 44 +++++++++++++++++++++++++++++++++ connect-automation/Dockerfile | 32 ++++++++++++++++++++++++ connect-automation/smoketest.sh | 7 ++++++ connect-automation/testrun.sh | 9 +++++++ 4 files changed, 92 insertions(+) create mode 100644 connect-automation/Dockerfile create mode 100644 connect-automation/smoketest.sh create mode 100644 connect-automation/testrun.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 76c515c40..fbe0226db 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,4 +1,9 @@ version: 2 +parameters: + run_smoketesting: + default: false + type: boolean + defaults: &defaults docker: - image: node:14 @@ -66,6 +71,38 @@ deploy_steps: &deploy_steps ./buildenv.sh -e $DEPLOY_ENV -b ${LOGICAL_ENV}-connectapp-deployvar source buildenvvar ./master_deploy.sh -d CFRONT -e $DEPLOY_ENV -c $ENABLE_CACHE + curl --request POST \ + --url https://circleci.com/api/v2/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pipeline \ + --header "Circle-Token: ${CIRCLE_TOKEN}" \ + --header 'content-type: application/json' \ + --data '{"branch":"'"$CIRCLE_BRANCH"'","parameters":{"run_smoketesting":true}}' + + + # Automated Smoke Testing +smoke_testing: &smoke_testing + # Initialization. + - checkout + - setup_remote_docker + - run: *install_dependency + - run: *install_deploysuite + # Restoration of node_modules from cache. + - restore_cache: *restore_cache_settings_for_build + - run: + name: "configuring environment" + command: | + ./awsconfiguration.sh $DEPLOY_ENV + ./buildenv.sh -e $DEPLOY_ENV -b ${LOGICAL_ENV}-connectapp-buildvar + - run: + name: "Run automation" + no_output_timeout: 20m + command: | + source awsenvconf + source buildenvvar + cd connect-automation + npm i + npm run test + - store_artifacts: + path: /connect-automation/test-results jobs: build-dev: @@ -107,6 +144,13 @@ jobs: ENABLE_CACHE: true steps: *deploy_steps + smoke-testing-dev: + <<: *defaults + environment: + DEPLOY_ENV: "DEV" + LOGICAL_ENV: "dev" + steps: *smoke_testing + workflows: version: 2 build: diff --git a/connect-automation/Dockerfile b/connect-automation/Dockerfile new file mode 100644 index 000000000..f15260314 --- /dev/null +++ b/connect-automation/Dockerfile @@ -0,0 +1,32 @@ +FROM node:10.17.0-stretch +RUN apt update +RUN apt install sudo +RUN sudo apt-get update; sudo apt-get install -y openjdk-8-jre openjdk-8-jre-headless openjdk-8-jdk openjdk-8-jdk-headless; +RUN curl --silent --show-error --location --fail --retry 3 --output /tmp/google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \ + && (sudo dpkg -i /tmp/google-chrome-stable_current_amd64.deb || sudo apt-get -fy install) \ + && rm -rf /tmp/google-chrome-stable_current_amd64.deb \ + && sudo sed -i 's|HERE/chrome"|HERE/chrome" --disable-setuid-sandbox --no-sandbox|g' \ + "/opt/google/chrome/google-chrome" \ + && google-chrome --version +RUN export CHROMEDRIVER_RELEASE=$(curl --location --fail --retry 3 http://chromedriver.storage.googleapis.com/LATEST_RELEASE) \ + && curl --silent --show-error --location --fail --retry 3 --output /tmp/chromedriver_linux64.zip "http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_RELEASE/chromedriver_linux64.zip" \ + && cd /tmp \ + && unzip chromedriver_linux64.zip \ + && rm -rf chromedriver_linux64.zip \ + && sudo mv chromedriver /usr/local/bin/chromedriver \ + && sudo chmod +x /usr/local/bin/chromedriver \ + && chromedriver --version +RUN sudo apt-get install -y libgconf-2-4 +RUN sudo apt-get install -y xvfb +RUN sudo apt-get install -y jq +ENV DISPLAY :99 +RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint \ + && chmod +x /tmp/entrypoint \ + && sudo mv /tmp/entrypoint /docker-entrypoint.sh + +COPY . /connect-automation +WORKDIR /connect-automation +RUN npm install +RUN ./node_modules/.bin/webdriver-manager update --versions.chrome=="$(google-chrome -version)" +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/bin/sh"] \ No newline at end of file diff --git a/connect-automation/smoketest.sh b/connect-automation/smoketest.sh new file mode 100644 index 000000000..b513b4484 --- /dev/null +++ b/connect-automation/smoketest.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +cd connect-automation + +docker build -t conn-smoke:latest . +docker run --shm-size=2g conn-smoke:latest ./testrun.sh -d -p 4444:4444 +track_error $? "Test case Failed" diff --git a/connect-automation/testrun.sh b/connect-automation/testrun.sh new file mode 100644 index 000000000..3d902a2dd --- /dev/null +++ b/connect-automation/testrun.sh @@ -0,0 +1,9 @@ +#!/bin/bash +./node_modules/.bin/webdriver-manager start --detach +npm run test + +if [ $? -eq 0 ]; then + echo "Test case successfully completed" +else + echo "Test case Failed" +fi From 8e04ffdebd22088efc528d2a0d3de5eaf62e20c2 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 13:22:50 +0300 Subject: [PATCH 05/24] CirecleCI smoke test: fix bash file permissions --- connect-automation/smoketest.sh | 0 connect-automation/testrun.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 connect-automation/smoketest.sh mode change 100644 => 100755 connect-automation/testrun.sh diff --git a/connect-automation/smoketest.sh b/connect-automation/smoketest.sh old mode 100644 new mode 100755 diff --git a/connect-automation/testrun.sh b/connect-automation/testrun.sh old mode 100644 new mode 100755 From 06a0ac1480d4b5671c67fb998e819402ccf054ee Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 13:28:25 +0300 Subject: [PATCH 06/24] CircleCI smoe test: config running --- .circleci/config.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index fbe0226db..b7a6c29f9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -170,9 +170,9 @@ workflows: context : org-global requires: - build-dev - filters: + filters: &filters-dev branches: - only: ['dev', 'feature/cf-2.20'] + only: ['dev', 'connect-automation'] - deployTest01: context : org-global @@ -189,3 +189,17 @@ workflows: filters: branches: only: master + + Smoke Testing: + when: + and: + - << pipeline.parameters.run_smoketesting >> + jobs: + - Hold [Smoke-Testing]: + type: approval + - Smoke-Testing-On-Dev: + context : org-global + requires: + - Hold [Smoke-Testing] + filters: + <<: *filters-dev \ No newline at end of file From 2d42dd6e592c807e4912338cf6f9de7e1a65bb15 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 13:35:02 +0300 Subject: [PATCH 07/24] CircleCI smoke test: fix schema issues --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b7a6c29f9..a406cc8f8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,4 +1,4 @@ -version: 2 +version: 2.1 parameters: run_smoketesting: default: false @@ -197,7 +197,7 @@ workflows: jobs: - Hold [Smoke-Testing]: type: approval - - Smoke-Testing-On-Dev: + - smoke-testing-dev: context : org-global requires: - Hold [Smoke-Testing] From 4e1d337a6acb0f2edf16a63bd685d6b7484909bd Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 14:16:10 +0300 Subject: [PATCH 08/24] CircleCI smoke test: create only test task without deploy --- .circleci/config.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index a406cc8f8..0b2622f12 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,5 +1,8 @@ version: 2.1 parameters: + run_basedeployment: + default: true + type: boolean run_smoketesting: default: false type: boolean @@ -75,7 +78,7 @@ deploy_steps: &deploy_steps --url https://circleci.com/api/v2/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pipeline \ --header "Circle-Token: ${CIRCLE_TOKEN}" \ --header 'content-type: application/json' \ - --data '{"branch":"'"$CIRCLE_BRANCH"'","parameters":{"run_smoketesting":true}}' + --data '{"branch":"'"$CIRCLE_BRANCH"'","parameters":{"run_smoketesting":true, "run_basedeployment": false}}' # Automated Smoke Testing @@ -98,9 +101,7 @@ smoke_testing: &smoke_testing command: | source awsenvconf source buildenvvar - cd connect-automation - npm i - npm run test + ./connect-automation/smoketest.sh - store_artifacts: path: /connect-automation/test-results @@ -154,6 +155,7 @@ jobs: workflows: version: 2 build: + when: << pipeline.parameters.run_basedeployment >> jobs: - build-dev: context : org-global @@ -191,9 +193,7 @@ workflows: only: master Smoke Testing: - when: - and: - - << pipeline.parameters.run_smoketesting >> + when: << pipeline.parameters.run_smoketesting >> jobs: - Hold [Smoke-Testing]: type: approval From a37d5bf64953e9278c9ee90afc9a59d782b1fa33 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 14:32:49 +0300 Subject: [PATCH 09/24] CircleCI smoke test: change default docker image --- .circleci/config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0b2622f12..3fea4a86b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,10 +9,12 @@ parameters: defaults: &defaults docker: - - image: node:14 + - image: docker:17.11.0-ce-git + deploy_defaults: &deploy_defaults docker: - image: cibuilds/aws + install_dependency: &install_dependency name: Installation of build and deployment dependencies. command: | From 707ad81261ac3dff026040ec00360aba5778cab8 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 14:37:53 +0300 Subject: [PATCH 10/24] CircleCI smoke test: use separate docker image --- .circleci/config.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3fea4a86b..5c5399e35 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,12 +9,13 @@ parameters: defaults: &defaults docker: - - image: docker:17.11.0-ce-git - + - image: node:14 deploy_defaults: &deploy_defaults docker: - image: cibuilds/aws - +test_defaults: &test_defaults + docker: + - image: docker:17.11.0-ce-git install_dependency: &install_dependency name: Installation of build and deployment dependencies. command: | @@ -148,7 +149,7 @@ jobs: steps: *deploy_steps smoke-testing-dev: - <<: *defaults + <<: *test_defaults environment: DEPLOY_ENV: "DEV" LOGICAL_ENV: "dev" From 43786a8ac4d06e9d9c702685d3ae832094503657 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 14:48:39 +0300 Subject: [PATCH 11/24] CircleCI smoke test: use commong image for build/test --- .circleci/config.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5c5399e35..0c6c4edcd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,7 +9,7 @@ parameters: defaults: &defaults docker: - - image: node:14 + - image: docker:17.11.0-ce-git deploy_defaults: &deploy_defaults docker: - image: cibuilds/aws @@ -19,10 +19,11 @@ test_defaults: &test_defaults install_dependency: &install_dependency name: Installation of build and deployment dependencies. command: | - apt update - apt install jq -y - apt install python-dev python-pip -y - pip install awscli --upgrade + apk update + apk add --no-cache bash openssl curl + apk upgrade + apk add --no-cache jq py-pip sudo + sudo pip install awscli --upgrade install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | From 355dcc49235a66a5d1976bca45aaefbdc2d9c3e3 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 14:52:36 +0300 Subject: [PATCH 12/24] CricleCI smoke test: use separate images for build/test --- .circleci/config.yml | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0c6c4edcd..93cace229 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,21 +9,30 @@ parameters: defaults: &defaults docker: - - image: docker:17.11.0-ce-git + - image: node:14 + deploy_defaults: &deploy_defaults docker: - image: cibuilds/aws + test_defaults: &test_defaults docker: - image: docker:17.11.0-ce-git + install_dependency: &install_dependency name: Installation of build and deployment dependencies. command: | - apk update - apk add --no-cache bash openssl curl - apk upgrade - apk add --no-cache jq py-pip sudo - sudo pip install awscli --upgrade + apt update + apt install jq -y + apt install python-dev python-pip -y + pip install awscli --upgrade +install_test_dependency: &install_test_dependency + name: Installation of build and deployment dependencies. + command: | + apt update + apt install jq -y + apt install python-dev python-pip -y + pip install awscli --upgrade install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | @@ -90,7 +99,7 @@ smoke_testing: &smoke_testing # Initialization. - checkout - setup_remote_docker - - run: *install_dependency + - run: *install_test_dependency - run: *install_deploysuite # Restoration of node_modules from cache. - restore_cache: *restore_cache_settings_for_build From d82cd09ebc9b77c3fe7912bf506f8dc394413995 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 15:06:37 +0300 Subject: [PATCH 13/24] CircleCI smoke test: fix test dependecies --- .circleci/config.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 93cace229..1e6165fba 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,10 +29,11 @@ install_dependency: &install_dependency install_test_dependency: &install_test_dependency name: Installation of build and deployment dependencies. command: | - apt update - apt install jq -y - apt install python-dev python-pip -y - pip install awscli --upgrade + apk update + apk add --no-cache bash openssl curl + apk upgrade + apk add --no-cache jq py-pip sudo + sudo pip install awscli --upgrade install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | From 5665adcadb4989a185ba466278366e285bea344d Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Thu, 3 Jun 2021 16:02:51 +0300 Subject: [PATCH 14/24] CricleCI smoke test: fix artifacts path --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1e6165fba..20804a864 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -117,7 +117,7 @@ smoke_testing: &smoke_testing source buildenvvar ./connect-automation/smoketest.sh - store_artifacts: - path: /connect-automation/test-results + path: ./connect-automation/test-results jobs: build-dev: From e550eb9b6778006f78986cb0f3faa0bfb83b49f0 Mon Sep 17 00:00:00 2001 From: Deepak Thapa Date: Tue, 8 Jun 2021 15:53:04 +0545 Subject: [PATCH 15/24] exclude phase creation test case. --- connect-automation/conf.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connect-automation/conf.ts b/connect-automation/conf.ts index 6169fc1b3..dfdced435 100644 --- a/connect-automation/conf.ts +++ b/connect-automation/conf.ts @@ -41,7 +41,7 @@ exports.config = { '../temp/test-suites/project-creation-flow/create-project.spec.js', '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', '../temp/test-suites/project-creation-flow/projects.spec.js', - '../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' + //'../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' ], // Options to be passed to Jasmine. From c4033114edddb2c6b8913524a428b62e8ece94fa Mon Sep 17 00:00:00 2001 From: Deepak Thapa Date: Tue, 8 Jun 2021 16:02:10 +0545 Subject: [PATCH 16/24] Flow verification. --- connect-automation/conf.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/connect-automation/conf.ts b/connect-automation/conf.ts index dfdced435..099e01899 100644 --- a/connect-automation/conf.ts +++ b/connect-automation/conf.ts @@ -35,12 +35,12 @@ exports.config = { specs: [ '../temp/test-suites/profile-update/my-profile.spec.js', - '../temp/test-suites/profile-update/left-menu.spec.js', - '../temp/test-suites/profile-update/user-profile-menu.spec.js', - '../temp/test-suites/profile-update/footer-menu.spec.js', - '../temp/test-suites/project-creation-flow/create-project.spec.js', - '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', - '../temp/test-suites/project-creation-flow/projects.spec.js', + // '../temp/test-suites/profile-update/left-menu.spec.js', + // '../temp/test-suites/profile-update/user-profile-menu.spec.js', + // '../temp/test-suites/profile-update/footer-menu.spec.js', + // '../temp/test-suites/project-creation-flow/create-project.spec.js', + // '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', + // '../temp/test-suites/project-creation-flow/projects.spec.js', //'../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' ], From 00ff406eb9edc16bc68f6246fcfff1e657081843 Mon Sep 17 00:00:00 2001 From: Deepak Thapa Date: Tue, 8 Jun 2021 17:20:21 +0545 Subject: [PATCH 17/24] Final changes. --- connect-automation/conf.ts | 12 ++++++------ connect-automation/smoketest.sh | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/connect-automation/conf.ts b/connect-automation/conf.ts index 099e01899..dfdced435 100644 --- a/connect-automation/conf.ts +++ b/connect-automation/conf.ts @@ -35,12 +35,12 @@ exports.config = { specs: [ '../temp/test-suites/profile-update/my-profile.spec.js', - // '../temp/test-suites/profile-update/left-menu.spec.js', - // '../temp/test-suites/profile-update/user-profile-menu.spec.js', - // '../temp/test-suites/profile-update/footer-menu.spec.js', - // '../temp/test-suites/project-creation-flow/create-project.spec.js', - // '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', - // '../temp/test-suites/project-creation-flow/projects.spec.js', + '../temp/test-suites/profile-update/left-menu.spec.js', + '../temp/test-suites/profile-update/user-profile-menu.spec.js', + '../temp/test-suites/profile-update/footer-menu.spec.js', + '../temp/test-suites/project-creation-flow/create-project.spec.js', + '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', + '../temp/test-suites/project-creation-flow/projects.spec.js', //'../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' ], diff --git a/connect-automation/smoketest.sh b/connect-automation/smoketest.sh index b513b4484..2a9c56fb8 100755 --- a/connect-automation/smoketest.sh +++ b/connect-automation/smoketest.sh @@ -4,4 +4,3 @@ cd connect-automation docker build -t conn-smoke:latest . docker run --shm-size=2g conn-smoke:latest ./testrun.sh -d -p 4444:4444 -track_error $? "Test case Failed" From 3ec925ada7bdfe43542d1548fbfa99e2ab5443a4 Mon Sep 17 00:00:00 2001 From: Nursoltan Saipolda Date: Wed, 9 Jun 2021 19:11:09 +0800 Subject: [PATCH 18/24] fix phase creation test (#4396) Co-authored-by: tc_user --- connect-automation/conf.ts | 2 +- .../create-new-phase.helper.ts | 41 +------------------ 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/connect-automation/conf.ts b/connect-automation/conf.ts index dfdced435..6169fc1b3 100644 --- a/connect-automation/conf.ts +++ b/connect-automation/conf.ts @@ -41,7 +41,7 @@ exports.config = { '../temp/test-suites/project-creation-flow/create-project.spec.js', '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', '../temp/test-suites/project-creation-flow/projects.spec.js', - //'../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' + '../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' ], // Options to be passed to Jasmine. diff --git a/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts index e01f06ff6..9bde263fb 100644 --- a/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts +++ b/connect-automation/page-objects/phase-creation-flow/create-new-phase/create-new-phase.helper.ts @@ -21,15 +21,7 @@ export class CreateNewPhaseHelper { public static async verifyCreateNewPhase(formData: IPhaseCreationData) { await this.clickOnAddNewPhaseButton(); await this.fillCreatePhaseForm(formData.title, formData.daysBetweenStartAndEndDate); - // Fill report form - await this.fillMilestoneForm(0, formData.reportName); - await this.createNewPhasePageObject.addMilestoneButton.click(); - // Fill deliverable review form - await this.fillMilestoneForm(1, formData.deliverableReviewName, 'Deliverable Review'); - await this.createNewPhasePageObject.addMilestoneButton.click(); - // Fill final deliverable review form - await this.fillMilestoneForm(2, formData.finalDeliverableReviewName, 'Final Deliverable Review'); - + await BrowserHelper.sleep(3000); await this.createNewPhasePageObject.publishButton.click(); @@ -75,35 +67,4 @@ export class CreateNewPhaseHelper { await this.createNewPhasePageObject.endDateInput().sendKeys(endDate); logger.info(`Filled end date field with: ${endDate.slice(2)}`); } - - /** - * Create and Fill milestone form - * @param appendix numeric indicator of added milestone form - * @param name name field - * @param type type field - */ - private static async fillMilestoneForm(appendix: number, name: string, type?: string, ) { - await BrowserHelper.sleep(3000); - if (type) { - const types = await this.createNewPhasePageObject.allTypeInput(); - await types[appendix].click(); - await BrowserHelper.sleep(500); - await this.createNewPhasePageObject.getOptionFromTypeDropdown(type).click(); - } - // Fill name field - const nameInput = this.createNewPhasePageObject.nameInput(appendix.toString()); - await nameInput.clear(); - await nameInput.sendKeys(name); - logger.info(`Filled name field with: ${name}`); - - // Fill start date field - const startDate = moment().format(CommonHelper.dateFormat()); - await this.createNewPhasePageObject.startDateInput(appendix.toString()).sendKeys(startDate); - logger.info(`Filled start date field with: ${startDate.slice(2)}`); - - // Fill end date field - const endDate = moment().add(1, 'days').format(CommonHelper.dateFormat()); - await this.createNewPhasePageObject.endDateInput(appendix.toString()).sendKeys(endDate); - logger.info(`Filled end date field with: ${endDate.slice(2)}`); - } } From 7d8d768083ba3c9155881a68eafd775d2e544668 Mon Sep 17 00:00:00 2001 From: Maksym Mykhailenko Date: Wed, 16 Jun 2021 09:53:00 +0300 Subject: [PATCH 19/24] chore: trigger deploying --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3ab9bf5e6..b78db1519 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -216,4 +216,4 @@ workflows: requires: - Hold [Smoke-Testing] filters: - <<: *filters-dev \ No newline at end of file + <<: *filters-dev From a4962d5fbda0a0381234df6a59c7d7ec8ef1aff0 Mon Sep 17 00:00:00 2001 From: Deepak Thapa Date: Mon, 5 Jul 2021 19:26:44 +0545 Subject: [PATCH 20/24] Add automation script for Project Setting page. Add automation script for Project Setting page. --- connect-automation/README.md | 2 +- connect-automation/conf.ts | 3 +- connect-automation/config/config.json | 3 +- .../page-objects/common-page/common.helper.ts | 53 ++- .../project-settings.helper.ts | 419 ++++++++++++++++++ .../project-settings.model.ts | 18 + .../project-settings/project-settings.po.ts | 398 +++++++++++++++++ connect-automation/sample.pdf | Bin 0 -> 3028 bytes connect-automation/test-data/test-data.json | 18 + .../project-settings.spec.ts | 52 +++ connect-automation/utils/config-helper.ts | 7 + 11 files changed, 965 insertions(+), 8 deletions(-) create mode 100644 connect-automation/page-objects/project-settings/project-settings.helper.ts create mode 100644 connect-automation/page-objects/project-settings/project-settings.model.ts create mode 100644 connect-automation/page-objects/project-settings/project-settings.po.ts create mode 100644 connect-automation/sample.pdf create mode 100644 connect-automation/test-suites/project-settings-flow/project-settings.spec.ts diff --git a/connect-automation/README.md b/connect-automation/README.md index 880095018..bcffac308 100644 --- a/connect-automation/README.md +++ b/connect-automation/README.md @@ -11,7 +11,7 @@ Chrome Browser `npm install` - To run tests - `cd connect-app-e2e-test` + `cd connect-automation` `npm run test` - Test results are generated in test-results/ folder diff --git a/connect-automation/conf.ts b/connect-automation/conf.ts index 6169fc1b3..b69d06986 100644 --- a/connect-automation/conf.ts +++ b/connect-automation/conf.ts @@ -41,7 +41,8 @@ exports.config = { '../temp/test-suites/project-creation-flow/create-project.spec.js', '../temp/test-suites/project-creation-flow/invite-copilot.spec.js', '../temp/test-suites/project-creation-flow/projects.spec.js', - '../temp/test-suites/phase-creation-flow/create-new-phase.spec.js' + '../temp/test-suites/phase-creation-flow/create-new-phase.spec.js', + '../temp/test-suites/project-settings-flow/project-settings.spec.js' ], // Options to be passed to Jasmine. diff --git a/connect-automation/config/config.json b/connect-automation/config/config.json index c5bcaa0f6..5423dd226 100644 --- a/connect-automation/config/config.json +++ b/connect-automation/config/config.json @@ -22,5 +22,6 @@ "notificationSettingsUrl": "https://connect.topcoder-dev.com/settings/notifications", "accountAndSecurityUrl": "https://connect.topcoder-dev.com/settings/account", "notificationsUrl": "https://connect.topcoder-dev.com/notifications", - "allProjectsUrl": "https://connect.topcoder-dev.com/projects" + "allProjectsUrl": "https://connect.topcoder-dev.com/projects", + "givenProjectUrl": "https://connect.topcoder-dev.com/projects/17236" } diff --git a/connect-automation/page-objects/common-page/common.helper.ts b/connect-automation/page-objects/common-page/common.helper.ts index d8fe83a8f..b33938637 100644 --- a/connect-automation/page-objects/common-page/common.helper.ts +++ b/connect-automation/page-objects/common-page/common.helper.ts @@ -1,5 +1,4 @@ import moment = require('moment'); -import { BrowserStack } from 'protractor/built/driverProviders'; import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; import * as appconfig from '../../config/app-config.json'; import { logger } from '../../logger/logger'; @@ -27,8 +26,8 @@ const waitUntil = async ( (isPageLoad ? appconfig.LoggerErrors.PageLoad : appconfig.LoggerErrors.ElementVisibilty) + - '.' + - extraMessage + '.' + + extraMessage ); }; @@ -108,8 +107,8 @@ export const CommonHelper = { (isPageLoad ? appconfig.LoggerErrors.PageLoad : appconfig.LoggerErrors.ElementPresence) + - '.' + - extraMessage + '.' + + extraMessage ); }, @@ -324,4 +323,48 @@ export const CommonHelper = { get createPhasePageTitle() { return ElementHelper.getElementByClassName('_2edGvU'); }, + + /** + * Wait for Page Element to be displayed + */ + async waitForElementToGetDisplayed(element) { + await CommonHelper.waitUntilVisibilityOf( + () => element, + 'Wait for Element To get Displayed', + true + ); + return element; + }, + + /** + * Get Alert Box + */ + get getAlertBox() { + BrowserHelper.sleep(1000); + return ElementHelper.getElementByXPath('//div[@class="s-alert-box-inner"]/span'); + }, + + /** + * Checks if element is present or not on page + * + * @param identifierType Type of Identifier + * @param identifierValue Identifier Value to search + * + * @returns Either True or False + */ + async isElementPresent(identifierType: string, identifierValue: string) { + let isElementPresent = true; + let element: TcElementImpl; + try { + switch(identifierType.toLowerCase()) { + case 'xpath': element = ElementHelper.getElementByXPath(identifierValue); break; + } + const isElementDisplayed = await element.isDisplayed(); + const isElementEnabled = await element.isEnabled(); + isElementPresent = (isElementDisplayed && isElementEnabled) ? true: false; + } catch(error) { + isElementPresent = false; + } + return isElementPresent; + }, }; diff --git a/connect-automation/page-objects/project-settings/project-settings.helper.ts b/connect-automation/page-objects/project-settings/project-settings.helper.ts new file mode 100644 index 000000000..a4189f429 --- /dev/null +++ b/connect-automation/page-objects/project-settings/project-settings.helper.ts @@ -0,0 +1,419 @@ +import * as path from 'path'; +import { BrowserHelper } from 'topcoder-testing-lib'; +import { CommonHelper } from '../common-page/common.helper'; +import { ProjectSettingsPageObject } from '../project-settings/project-settings.po'; +import { IProjectSettings } from './project-settings.model'; + +export class ProjectSettingsPageHelper { + /** + * Initialize Create Project page object + */ + public static initialize() { + this.projectSettingsPageObject = new ProjectSettingsPageObject(); + } + + /** + * Open Home page + */ + public static async open() { + await ProjectSettingsPageObject.open(); + await CommonHelper.waitForPageDisplayed(); + await BrowserHelper.sleep(10000); + await CommonHelper.waitForElementToGetDisplayed(this.projectSettingsPageObject.getProjectMenu('Project Settings')); + } + + /** + * Edits Settings page + * + * @param projectSettings Test Data for the test + */ + public static async editProjectSettings(projectSettings: IProjectSettings) { + // Click on Project Settings Menu + await this.projectSettingsPageObject.getProjectMenu('Project Settings').click(); + + // Select Enforce NDA Yes Button + const enforceTopcoderNDARadioButtons = await this.projectSettingsPageObject.enforceTopcoderNDARadioButtons; + const index = (projectSettings.enforceTopcoderNDA === 'Yes') ? 0 : 1; + await enforceTopcoderNDARadioButtons[index].click(); + + // Specify the Intended Work Groups + await this.projectSettingsPageObject.intendedWorkGroupsSelect.click(); + await this.projectSettingsPageObject.intendedWorkGroupsInput.sendKeys(projectSettings.intendedWorkGroups); + const intendedWorkGroupsList = this.projectSettingsPageObject.intendedWorkGroupsList; + await CommonHelper.waitForElementToGetDisplayed(intendedWorkGroupsList); + await intendedWorkGroupsList.click(); + + // Click on Save button + await this.projectSettingsPageObject.saveButton.click(); + + // Verify the Alert Message + const message = await CommonHelper.getAlertBox.getText(); + expect(message).toBe(projectSettings.projectUpdatedMessage); + + // Verify the Enforce NDA Yes Button is selected + const enforceTopcoderRadioStatus = await this.projectSettingsPageObject.getEnforceTopcoderNDARadioButtonsStatus(projectSettings.enforceTopcoderNDA); + expect(enforceTopcoderRadioStatus).toContain('selected'); + + // Verify Intended Work Groups has value Hide Challenges + const intendedWorkGroupsSelectedValue = (await this.projectSettingsPageObject.intendedWorkGroupsSelectedValue.getText()).toString(); + expect(intendedWorkGroupsSelectedValue).toEqual(projectSettings.intendedWorkGroups); + } + + /** + * Resets the Project Settings as a pre-requisite for TC001 + */ + public static async resetSettings() { + // Resetting the project settings + await this.projectSettingsPageObject.getProjectMenu('Project Settings').click(); + + // Waiting for page to get loaded + await BrowserHelper.sleep(5000); + + // Resetting Enforce NDA to No + const allProjectsBeforeSearch = await this.projectSettingsPageObject.enforceTopcoderNDARadioButtons; + await allProjectsBeforeSearch[1].click(); + + // Deleting the Existing Intended Work Group if present + await this.projectSettingsPageObject.intendedWorkGroupsCloseIcon.click().catch((err) => { + // Do Nothing + }); + + // Clicking on Save button if any changes are present + await this.projectSettingsPageObject.saveButton.click().catch((err) => { + // Do Nothing + }); + await BrowserHelper.sleep(1000); + + // Navigating to the project URL again + await this.open(); + } + + /** + * Verify Account Expiry Information + */ + public static async verifyAccountExpiryInformation() { + // Resetting the project settings + await this.projectSettingsPageObject.getProjectMenu('Project Settings').click(); + + // Verify that Account Expiry Icon is present + const isIconPresent = await CommonHelper.isElementPresent('xpath', this.projectSettingsPageObject.projectSettingsExpiryIcon); + expect(isIconPresent).toBe(true); + } + + /** + * Verify User can Add / Edit / Delete / Download files + * + * @param projectSettings Test Data for the test + */ + public static async verifyUserCanAddEditDeleteDownloadFiles(projectSettings: IProjectSettings) { + // Click On Assets Library Project Menu + await this.projectSettingsPageObject.getProjectMenu('Assets Library').click(); + + // Wait for Assets Library Page to Load and verify page title + const assetsLibraryLabel = this.projectSettingsPageObject.assetsLibraryLabel; + await CommonHelper.waitForElementToGetDisplayed(assetsLibraryLabel); + expect((await assetsLibraryLabel.getText()).toString().toLowerCase()).toEqual('assets library'); + + // Verify that Files tab is selected by default + const isTabSelected = await this.projectSettingsPageObject.isTabSelected('Files'); + expect(isTabSelected).toBe(true); + + // Get Current File Count before ading new file + const previousCount = (await this.projectSettingsPageObject.getCount('Files').getText()).toString(); + + // Click on Add New Button and Wait for Upload Dialog box to appear + await this.projectSettingsPageObject.addNewButton.click(); + const fileUploadDialogBox = this.projectSettingsPageObject.fileUploadDialogBox; + await CommonHelper.waitForElementToGetDisplayed(fileUploadDialogBox) + + // Verify that File Uplodder Window is displayed + const isIconPresent = await CommonHelper.isElementPresent('xpath', this.projectSettingsPageObject.fileUploadContentArea); + expect(isIconPresent).toBe(true); + + // Specify the File Upload Path and Click Upload Button + await this.specifyUploadFilePathAndClickUploadButton(); + + // Verify Attachment Options window displays + const attachmentOptionsDialogBox = this.projectSettingsPageObject.attachmentOptionsDialogBox; + await CommonHelper.waitForElementToGetDisplayed(attachmentOptionsDialogBox); + expect(attachmentOptionsDialogBox).toBeDefined() + + // Click on Tags Text box and Specify Tag Name + await this.projectSettingsPageObject.tagsTextbox.click(); + const tagName = CommonHelper.appendDate(projectSettings.tagName); + await this.projectSettingsPageObject.intendedWorkGroupsInput.sendKeys(tagName + '\n'); + + // Click on All Project Members Button + await this.projectSettingsPageObject.allProjectMembersButton.click(); + await BrowserHelper.waitUntilInVisibilityOf(attachmentOptionsDialogBox) + + // Verify Alert Message + let message = await CommonHelper.getAlertBox.getText(); + expect(message).toBe(projectSettings.newFileAdditionMessage); + + // Verify the newly added File Name + const uploadedFileName = (await this.projectSettingsPageObject.getAssetsLibraryFileName(tagName).getText()).toString(); + expect(uploadedFileName).toContain('sample'); + + // Get Current Count after adding file + const currentCount = (await this.projectSettingsPageObject.getCount('Files').getText()).toString(); + expect(parseInt(currentCount, 10)).toEqual(parseInt(previousCount, 10)+1); + + // Click on the Assets Library File Name that's newly Added and Verify new tab is opened + await this.clickOnLinkAndVerifyNewTab(tagName); + + // Click On Grid Button against newly added file and click Edit Link + await this.projectSettingsPageObject.getGridButton(tagName).click(); + await this.projectSettingsPageObject.getGridEditButton(tagName).click(); + + // Get Edit Attachment Window Title and Verify + const editAttachmentWindowTitle = (await this.projectSettingsPageObject.editAttachmentWindow.getText()).toString(); + expect(editAttachmentWindowTitle).toEqual(projectSettings.editAttachmentWindowTitle); + + // Verify Edit Attachment Tag Name + const editAttachmentTagName = (await this.projectSettingsPageObject.editAttachmentTagName.getText()).toString(); + expect(editAttachmentTagName).toEqual(tagName); + + // Update Edit Attachment Tag Name + const editedTitle = CommonHelper.appendDate(projectSettings.assetsLibraryTitle); + const editAttachmentTitleInputBox = this.projectSettingsPageObject.editAttachmentTitleInputBox; + await editAttachmentTitleInputBox.clear(); + await editAttachmentTitleInputBox.sendKeys(editedTitle); + + // Click On Save Changes button + await this.projectSettingsPageObject.saveChangesButton.click(); + + // Verify Alert Message + message = await CommonHelper.getAlertBox.getText(); + expect(message).toBe(projectSettings.attachmentUpdationSuccessMessage); + + // Fetch Updated file name from the Files tab + const updatedFileName = (await this.projectSettingsPageObject.getAssetsLibraryFileName(tagName).getText()).toString(); + expect(updatedFileName).toEqual(editedTitle); + + // Click on Grid Button against given tag and click Remove button + await this.projectSettingsPageObject.getGridButton(tagName).click(); + await this.projectSettingsPageObject.getGridRemoveButton(tagName).click(); + + // Verify Delte Popup Title + const deletePopupTitle = (await this.projectSettingsPageObject.editAttachmentWindow.getText()).toString(); + expect(deletePopupTitle).toEqual(projectSettings.deletePopupTitle); + + // Verify Delete Popup Message + const deletePopupMessage = (await this.projectSettingsPageObject.deletePopupMessage.getText()).toString(); + expect(deletePopupMessage).toEqual(projectSettings.deletePopupMessage); + + // Click on Delete File Button + await this.projectSettingsPageObject.deleteFileButton.click(); + + // Verify Alert Message + const attachmentRemovalMessage = await CommonHelper.getAlertBox.getText(); + expect(attachmentRemovalMessage).toBe(projectSettings.attachmentRemovalMessage); + await BrowserHelper.sleep(2000); + + // Verify Files Count after File Deletion + const countAfterDeletion = (await this.projectSettingsPageObject.getCount('Files').getText()).toString(); + expect(parseInt(countAfterDeletion, 10)).toEqual(parseInt(currentCount, 10) - 1); + } + + /** + * Verify User can Add / Edit / Delete / Download links + * + * @param projectSettings Test Data for the test + */ + public static async verifyUserCanAddEditDeleteDownloadLinks(projectSettings: IProjectSettings) { + // Click on Assets Library Link + await this.projectSettingsPageObject.getProjectMenu('Assets Library').click(); + + // Verify Assets Library Window is Displayed and Verify Page Title + const assetsLibraryLabel = this.projectSettingsPageObject.assetsLibraryLabel; + await CommonHelper.waitForElementToGetDisplayed(assetsLibraryLabel); + expect((await assetsLibraryLabel.getText()).toString().toLowerCase()).toEqual('assets library'); + + // Get Count Before adding new link + const previousCount = (await this.projectSettingsPageObject.getCount('Links').getText()).toString(); + + // Click on Links Tab + await this.projectSettingsPageObject.clickOnTab('Links').click() + + // Click on Add New Button and Verify Add Link Popup Title + await this.projectSettingsPageObject.addNewButton.click(); + const addLinkPopupTitle = this.projectSettingsPageObject.addLinkPopupTitle; + await CommonHelper.waitForElementToGetDisplayed(addLinkPopupTitle) + expect((await addLinkPopupTitle.getText()).toString().toLocaleLowerCase()).toBe('add a link') + + // Specify Name / URL and Tag in Link popup window + const titleName = CommonHelper.appendDate(projectSettings.assetsLibraryTitle); + await this.projectSettingsPageObject.linkNameTextbox.sendKeys(titleName); + await this.projectSettingsPageObject.linkUrlTextbox.sendKeys(projectSettings.addALinkURL); + await this.projectSettingsPageObject.tagsTextbox.click(); + const tagName = CommonHelper.appendDate(projectSettings.tagName); + await this.projectSettingsPageObject.intendedWorkGroupsInput.sendKeys(tagName + '\n'); + + // Click Add Link Button + await this.projectSettingsPageObject.addLinkButton.click(); + + // Verify Alert Message + let message = await CommonHelper.getAlertBox.getText(); + expect(message).toBe(projectSettings.linkAttachmentSuccessMessage); + + // Verify Uploaded link Name + const uploadedLinkName = (await this.projectSettingsPageObject.getAssetsLibraryFileName(tagName).getText()).toString(); + expect(uploadedLinkName).toEqual(titleName) + + // Verify Link could should be updated by 1 + const currentCount = (await this.projectSettingsPageObject.getCount('Links').getText()).toString(); + expect(parseInt(currentCount, 10)).toEqual(parseInt(previousCount, 10)+1); + + // Click on Recently Added Link and Verify new tab is opened + await this.clickOnLinkAndVerifyNewTab(tagName); + + // Click On Grid Button against newly added Link and click Edit button + await this.projectSettingsPageObject.getGridButton(tagName).click(); + await this.projectSettingsPageObject.getGridEditButton(tagName).click(); + + // Verify Edit Link Windows Title + const editLinkWindowTitle = (await this.projectSettingsPageObject.editAttachmentWindow.getText()).toString(); + expect(editLinkWindowTitle).toEqual(projectSettings.editLinkWindowTitle); + + // Verify Edit Link Title + const editLinkTitleName = this.projectSettingsPageObject.editLinkTitleTextbox; + expect((await editLinkTitleName.getAttribute('value')).toString().toLowerCase()).toEqual(titleName.toLowerCase()); + + // Verify Edit Link URL + const editLinkAddress = (await this.projectSettingsPageObject.editLinkAddressTextbox.getAttribute('value')).toString() + expect(editLinkAddress).toEqual(projectSettings.addALinkURL) + + // Verify Edit Link Tag + const editLinkTagName = (await this.projectSettingsPageObject.editAttachmentTagName.getText()).toString() + expect(editLinkTagName).toEqual(tagName) + + // Update Title Name + const updatedTitleName = CommonHelper.appendDate(titleName); + await editLinkTitleName.clear(); + await editLinkTitleName.sendKeys(updatedTitleName); + + // Click on Edit Link button + await this.projectSettingsPageObject.editLinkButton.click() + + // Verify Alert Message + message = await CommonHelper.getAlertBox.getText(); + expect(message).toBe(projectSettings.attachmentUpdationSuccessMessage); + + // Verify Updated Link Title + const updatedFileName = (await this.projectSettingsPageObject.getAssetsLibraryFileName(tagName).getText()).toString(); + expect(updatedFileName).toEqual(updatedTitleName) + + // Click on Grid Button against newly added Link and click Remove Button + await this.projectSettingsPageObject.getGridButton(tagName).click(); + await this.projectSettingsPageObject.getGridRemoveButton(tagName).click(); + + // Verify Delete Link Popup Title + const deletePopupTitle = (await this.projectSettingsPageObject.editAttachmentWindow.getText()).toString(); + expect(deletePopupTitle).toEqual(projectSettings.deleteLinkPopupTitle); + + // Verify Delte Link Popup Message + const deletePopupMessage = (await this.projectSettingsPageObject.deletePopupMessage.getText()).toString(); + expect(deletePopupMessage).toEqual(projectSettings.deletePopupMessage); + + // Click on Delete Link Button + await this.projectSettingsPageObject.deleteLinkButton.click(); + + // Verify Alert Message + const attachmentRemovalMessage = await CommonHelper.getAlertBox.getText(); + expect(attachmentRemovalMessage).toBe(projectSettings.attachmentRemovalMessage); + await BrowserHelper.sleep(2000); + + // Verify Link Count after Deleting link + const countAfterDeletion = (await this.projectSettingsPageObject.getCount('Links').getText()).toString(); + expect(parseInt(countAfterDeletion, 10)).toEqual(parseInt(currentCount, 10) - 1); + } + + /** + * Verify that users can add Message with file attachment + * + * @param projectSettings Test data for the test + */ + public static async verifyUserCanAddMessageWithFileAttachment(projectSettings: IProjectSettings) { + // Clicks on Messages Menu + await this.projectSettingsPageObject.getProjectMenu('Messages').click(); + + // Verify Message Creation Window + const messageCreationWindow = this.projectSettingsPageObject.messageCreationWindow; + await CommonHelper.waitForElementToGetDisplayed(messageCreationWindow); + expect(messageCreationWindow).toBeDefined(); + messageCreationWindow.click(); + + // Specify Discussion Title + const discussionTitle = CommonHelper.appendDate(projectSettings.discussionTitle); + messageCreationWindow.sendKeys(discussionTitle); + + // Specify Message Description + await this.projectSettingsPageObject.messageDescriptionTextbox.sendKeys(discussionTitle); + + // Click on Attach a file link and specify the file to be attached + await this.projectSettingsPageObject.attachAFileLink.click(); + const fileUploadDialogBox = this.projectSettingsPageObject.fileUploadDialogBox; + await CommonHelper.waitForElementToGetDisplayed(fileUploadDialogBox) + + // Specify the File Upload Path and Click Upload Button + await this.specifyUploadFilePathAndClickUploadButton(); + + // Wait until post button disappears + await BrowserHelper.waitUntilInVisibilityOf(this.projectSettingsPageObject.fileUploadDialogBox); + + // Click on Post Button + await this.projectSettingsPageObject.postButton.click(); + + // Get Recently added Message from Earlier Message Section and Verify + const earlierMessagesFileName = this.projectSettingsPageObject.earlierMessagesFile(discussionTitle); + await CommonHelper.waitForElementToGetDisplayed(earlierMessagesFileName); + expect((await earlierMessagesFileName.getText()).toString()).toEqual(discussionTitle); + + // Click on Assets Library Menu + await this.projectSettingsPageObject.getProjectMenu('Assets Library').click(); + + // Get Assets Library File that's recently added and click on it + const assetsLibraryFile = this.projectSettingsPageObject.getAssetsLibraryFile(discussionTitle); + await CommonHelper.waitForElementToGetDisplayed(assetsLibraryFile); + await assetsLibraryFile.click(); + + // Verify the uploaded file name + const uploadedFileName = (await this.projectSettingsPageObject.uploadedFile.getText()).toString(); + expect(uploadedFileName).toContain('sample'); + } + + /** + * Click on the link and Verify New Opened Tab + * + * @param tagName Name of the tag + */ + public static async clickOnLinkAndVerifyNewTab(tagName: string) { + await this.projectSettingsPageObject.getAssetsLibraryFileName(tagName).click(); + await BrowserHelper.sleep(5000); + await BrowserHelper.getAllWindowHandles().then((handles) => { + expect(handles.length).toEqual(2); + BrowserHelper.switchToWindow(handles[1]); + BrowserHelper.close(); + BrowserHelper.switchToWindow(handles[0]); + }); + await BrowserHelper.sleep(2000); + } + + /** + * Specify Upload File Path and Click Upload Button + */ + public static async specifyUploadFilePathAndClickUploadButton() { + // Specify the File Upload Path + const fileToUploadElement = this.projectSettingsPageObject.selectFileToUploadButton; + const fileToUpload = '../../sample.pdf'; + let absolutePath = path.resolve(__dirname, fileToUpload); + absolutePath = absolutePath.replace('/temp/', '/'); + await fileToUploadElement.sendKeys(absolutePath); + + // Click on Upload Button + await this.projectSettingsPageObject.uploadButton.click(); + } + + private static projectSettingsPageObject: ProjectSettingsPageObject; +} diff --git a/connect-automation/page-objects/project-settings/project-settings.model.ts b/connect-automation/page-objects/project-settings/project-settings.model.ts new file mode 100644 index 000000000..5584315da --- /dev/null +++ b/connect-automation/page-objects/project-settings/project-settings.model.ts @@ -0,0 +1,18 @@ +export interface IProjectSettings { + enforceTopcoderNDA: string; + intendedWorkGroups: string; + projectUpdatedMessage: string; + tagName: string; + newFileAdditionMessage: string; + attachmentUpdationSuccessMessage: string; + deletePopupTitle: string; + deletePopupMessage: string; + attachmentRemovalMessage: string; + linkAttachmentSuccessMessage: string; + deleteLinkPopupTitle: string; + editAttachmentWindowTitle: string; + assetsLibraryTitle: string; + addALinkURL: string; + editLinkWindowTitle: string; + discussionTitle: string; + } \ No newline at end of file diff --git a/connect-automation/page-objects/project-settings/project-settings.po.ts b/connect-automation/page-objects/project-settings/project-settings.po.ts new file mode 100644 index 000000000..eabfe25ff --- /dev/null +++ b/connect-automation/page-objects/project-settings/project-settings.po.ts @@ -0,0 +1,398 @@ +import { BrowserHelper, ElementHelper } from 'topcoder-testing-lib'; +import { logger } from '../../logger/logger'; +import { ConfigHelper } from '../../utils/config-helper'; + +export class ProjectSettingsPageObject { + /** + * Open the Given Project URL + */ + public static async open() { + await BrowserHelper.open(ConfigHelper.getGivenProjectUrl()); + logger.info('User navigated to Project Page'); + } + + /** + * Get the Project Menu + * + * @param menu Name of the Project Menu + * + * @returns Element of Project Menu + */ + public getProjectMenu(menu: string) { + let index = 0; + switch (menu) { + case 'Dashboard': index = 1; break; + case 'Messages': index = 2; break; + case 'Assets Library': index = 5; break; + case 'Project Settings': index = 7; break; + } + return ElementHelper.getElementByXPath(`(//a[contains(@href,'/projects/')]/span)[${index}]`); + } + + /** + * Get Enforce Topcoder NDA Radio Buttons List + */ + public get enforceTopcoderNDARadioButtons() { + return ElementHelper.getAllElementsByXPath('//label[contains(@for,"nda-opt")]'); + } + + /** + * Get Intended Work Groups Close Icon + */ + public get intendedWorkGroupsCloseIcon() { + return ElementHelper.getElementByXPath('//div[contains(@class,"react-select__multi-value__remove")]'); + } + + /** + * Get Intended Work Groups Select Input + */ + public get intendedWorkGroupsSelect() { + return ElementHelper.getElementByXPath('//div[text()="Select..."]'); + } + + /** + * Get Intended Work Groups Input + */ + public get intendedWorkGroupsInput() { + return ElementHelper.getElementByXPath('(//input[contains(@id,"react-select")])[1]'); + } + + /** + * Get Intended Work Group List + */ + public get intendedWorkGroupsList() { + return ElementHelper.getElementByXPath('//div[@id="react-select-2-option-0"]'); + } + + /** + * Get Save Button + */ + public get saveButton() { + return ElementHelper.getElementByXPath('//button[normalize-space()="Save"]'); + } + + /** + * Get Enforce Topcoder NDA Radio Button + * + * @param value Enforce Topcoder NDA Radio button: Yes or No + * + * @returns Enforce Topcoder NDA Radio Button + */ + public getEnforceTopcoderNDARadioButtonsStatus(value: string) { + if (value === 'Yes') { + return ElementHelper.getElementByXPath('(//label[contains(@for,"nda-opt")]/parent::div)[1]').getAttribute('class'); + } else { + return ElementHelper.getElementByXPath('(//label[contains(@for,"nda-opt")]/parent::div)[2]').getAttribute('class'); + } + } + + /** + * Get Intended Work Group Selected Value + */ + public get intendedWorkGroupsSelectedValue() { + return ElementHelper.getElementByXPath('//div[contains(@class,"react-select__multi-value__label") and text()="Hide Challenges"]'); + } + + /** + * Get Project Settings Expiry Icon + */ + public get projectSettingsExpiryIcon() { + return '//span[normalize-space()="Project Settings"]/*[local-name()="svg"]'; + } + + /** + * Get Assets Library Label + */ + public get assetsLibraryLabel() { + return ElementHelper.getElementByXPath('//div[text()="Assets Library"]'); + } + + /** + * Click on the given tab + * + * @param tabName Name of the tab + * + * @returns Element of the tab + */ + public clickOnTab(tabName: string) { + return ElementHelper.getElementByXPath(`//span[text()='${tabName}']`); + } + + /** + * Verifies if Tab is selected or not + * + * @param tabName Name of the tab + * + * @returns Either True or False + */ + public async isTabSelected(tabName: string) { + const selectedTabXpath = `//span[text()='${tabName}']/parent::li`; + const className = (await ElementHelper.getElementByXPath(selectedTabXpath).getAttribute('class')).toString() + return (className.trim().length !== 0) ? true: false; + } + + /** + * Get the tab count + * @param tabName Name of the Tab + * + * @returns Element of the tab count + */ + public getCount(tabName: string) { + return ElementHelper.getElementByXPath(`//span[text()='${tabName}']/following-sibling::span`); + } + + /** + * Get Add New Button + */ + public get addNewButton() { + return ElementHelper.getElementByXPath('//button[text()="Add new..."]'); + } + + /** + * Get File Upload Content Area + */ + public get fileUploadContentArea() { + return '//div[@class="fsp-content"]'; + } + + /** + * Get File Upload Dialog Box + */ + public get fileUploadDialogBox() { + return ElementHelper.getElementByXPath('//div[@class="fsp-modal"]'); + } + + /** + * Get File To Upload Button + */ + public get selectFileToUploadButton() { + return ElementHelper.getElementByXPath('//input[@id="fsp-fileUpload"]'); + } + + /** + * Get Upload Button + */ + public get uploadButton() { + return ElementHelper.getElementByXPath('//span[@title="Upload"]'); + } + + /** + * Get Attachment Options Dialog box + */ + public get attachmentOptionsDialogBox() { + return ElementHelper.getElementByXPath('//div[@class="project-dialog"]'); + } + + /** + * Get Tags Text box + */ + public get tagsTextbox() { + return ElementHelper.getElementByXPath('//div[text()="Add tags"]'); + } + + /** + * Get All Project Members button + */ + public get allProjectMembersButton() { + return ElementHelper.getElementByXPath('//button[text()="All project members"]'); + } + + /** + * Get Assets Library File Name + * + * @param tagName Name of the tag + * + * @returns Element of Assets Library File Name + */ + public getAssetsLibraryFileName(tagName: string) { + return ElementHelper.getElementByXPath(`//span[text()='${tagName}']/preceding-sibling::p/a`); + } + + /** + * Get Grid button for the tag + * + * @param tagName Name of the tag + * + * @returns Element of the Grid Button for the tag + */ + public getGridButton(tagName: string) { + return ElementHelper.getElementByXPath(`//span[text()='${tagName}']/ancestor::li//div[contains(@class,'edit-toggle-container')]`); + } + + /** + * Get Grid Edit Button for the tag + * + * @param tagName Name of the tag + * + * @returns Element of Edit button for the tag + */ + public getGridEditButton(tagName: string) { + return ElementHelper.getElementByXPath(`//span[text()='${tagName}']/ancestor::li//a[text()='Edit']`); + } + + /** + * Get Edit Attachment Window + */ + public get editAttachmentWindow() { + return ElementHelper.getElementByXPath('//div[@class="modal-title danger"]'); + } + + /** + * Get Edit Attachment Tag Name + */ + public get editAttachmentTagName() { + return ElementHelper.getElementByXPath('//div[contains(@class,"react-select__multi-value__label")]'); + } + + /** + * Get Edit Attachment Title Input Box + */ + public get editAttachmentTitleInputBox() { + return ElementHelper.getElementByXPath('//input[@class="edit-input"]'); + } + + /** + * Get Save Changes Button + */ + public get saveChangesButton() { + return ElementHelper.getElementByXPath('//button[text()="Save Changes"]'); + } + + /** + * Get Grid Remove Button for the tag + * + * @param tagName Name of the tag + * + * @returns Element of Grid Remove button for the tag + */ + public getGridRemoveButton(tagName: string) { + return ElementHelper.getElementByXPath(`//span[text()='${tagName}']/ancestor::li//a[text()='Remove']`); + } + + /** + * Get Delete Popup Message + */ + public get deletePopupMessage() { + return ElementHelper.getElementByXPath('//p[@class="message"]'); + } + + /** + * Get Delete File Button + */ + public get deleteFileButton() { + return ElementHelper.getElementByXPath('//button[text()="Delete file"]'); + } + + /** + * Get Add Link Popup Title + */ + public get addLinkPopupTitle() { + return ElementHelper.getElementByXPath('//div[contains(@class,"modal-title")]'); + } + + /** + * Get Link Name Text box + */ + public get linkNameTextbox() { + return ElementHelper.getElementByXPath('//input[@name="title"]'); + } + + /** + * Get Link URL text box + */ + public get linkUrlTextbox() { + return ElementHelper.getElementByXPath('//input[@name="address"]'); + } + + /** + * Get Link Button + */ + public get addLinkButton() { + return ElementHelper.getElementByXPath('//button[@type="submit"]'); + } + + /** + * Get Edit Lnk Text box + */ + public get editLinkTitleTextbox() { + return ElementHelper.getElementByXPath('(//input[@class="edit-input"])[1]'); + } + + /** + * Get Edit Link Address Text box + */ + public get editLinkAddressTextbox() { + return ElementHelper.getElementByXPath('(//input[@class="edit-input"])[2]'); + } + + /** + * Get Edit Link Button + */ + public get editLinkButton() { + return ElementHelper.getElementByXPath('//button[text()="Edit link"]'); + } + + /** + * Get Delete Link Button + */ + public get deleteLinkButton() { + return ElementHelper.getElementByXPath('//button[text()="Delete link"]'); + } + + /** + * Get Message Creation Window + */ + public get messageCreationWindow() { + return ElementHelper.getElementByXPath('//input[@class="new-post-title"]'); + } + + /** + * Get Message Description Text Box + */ + public get messageDescriptionTextbox() { + return ElementHelper.getElementByXPath('//div[@role="combobox"]'); + } + + /** + * Get Attach A File Link + */ + public get attachAFileLink() { + return ElementHelper.getElementByXPath('//div[@class="tc-attachment-button"]'); + } + + /** + * Get Post Button + */ + public get postButton() { + return ElementHelper.getElementByXPath('//button[normalize-space()="Post"]'); + } + + /** + * Get Earlier Message file based on the name provided + * + * @param fileName Name of the File + * + * @returns Element of Earlier Message File + */ + public earlierMessagesFile(fileName: string) { + return ElementHelper.getElementByXPath(`//div[text()='${fileName}']`); + } + + /** + * Get Assets Library File Name + * + * @param fileName Name of the File + * + * @returns Element of the Assets Library File + */ + public getAssetsLibraryFile(fileName: string) { + return ElementHelper.getElementByXPath(`//p[text()='${fileName}']`); + } + + /** + * Get Upload File + */ + public get uploadedFile() { + return ElementHelper.getElementByXPath('//a[contains(@href, "/projects/messages")]'); + } +} \ No newline at end of file diff --git a/connect-automation/sample.pdf b/connect-automation/sample.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dbf091df9a607221e000593a8b5a97b5ea5fb073 GIT binary patch literal 3028 zcmd5;+iK%D7``|79sZj_3mw^3d>n>>rft|$r=<Gl zWIx$CH11?D%do5oLHZ^AN9p^&qnnG-8;=ca>*%k)|M=6kY|A5;iigj(_3oW*IpgQ0 zB;?N?G}O?F~e-o&fdSbEveGxxNVs&T}_+wIC);wN|S3_`=^Ym z?y1Je_6W!5=Pa%0o_u4M!sh=IbybO>E+wq5{dR6;Rn+AKku*_{3aqswkCH}v ztJ}FLi^-kT6dU1Mb|uqH42vhacOeZu&Rl#HCGFr-xBWM-|+e^~95C3kuyCa8Nz&=d3 zPw9GoO7mhx4-J@*eqI7o0NLmbm9D2#M#EZ@Dl~~|vk9Y>(382@*~jiaPA^4vloGW^${BO z&|L0&$FyZ34q1)S0TXjiAeyzye;HJqPhX+oj`M@hIuz@m%ZWTgO?gR!qsqvQPqV zVBwTl{djT$Lm)?KJ&`!^p- zB?yU29^x`|s{JSof_pN9Oqel#YyZFw~B0kRS*9GB0?&&kJAg z<34|7m-_(#cV8b5!0fg%+X9aQc`Db0`!4$;o1mTB0`JJMabTnKqnZ}rgzd~^$`C_Q S>NZV0@_bPEqs!}&ZT$n`rwj1_ literal 0 HcmV?d00001 diff --git a/connect-automation/test-data/test-data.json b/connect-automation/test-data/test-data.json index 935cea014..e76380548 100644 --- a/connect-automation/test-data/test-data.json +++ b/connect-automation/test-data/test-data.json @@ -42,5 +42,23 @@ "deliverableReviewName": "Deliverable Review 1", "finalDeliverableReviewName": "Final Deliverable Review 1" } + }, + "projectSettings": { + "enforceTopcoderNDA": "Yes", + "intendedWorkGroups": "Hide Challenges", + "projectUpdatedMessage": "PROJECT UPDATED.", + "tagName": "Tag1", + "newFileAdditionMessage": "ADDED ATTACHMENT TO THE PROJECT SUCCESSFULLY", + "attachmentUpdationSuccessMessage": "UPDATED ATTACHMENT SUCCESSFULLY", + "deletePopupTitle": "You're about to delete a File", + "deletePopupMessage": "Your team might need this link, are you sure you want to delete it? This action can't be undone.", + "attachmentRemovalMessage": "REMOVED ATTACHMENT SUCCESSFULLY", + "linkAttachmentSuccessMessage": "ADDED ATTACHMENT TO THE PROJECT SUCCESSFULLY", + "deleteLinkPopupTitle": "You're about to delete a link", + "editAttachmentWindowTitle": "You're about to edit an attachment", + "assetsLibraryTitle": "Title1", + "addALinkURL": "https://www.google.com", + "editLinkWindowTitle": "You're about to edit a link", + "discussionTitle": "Message1" } } diff --git a/connect-automation/test-suites/project-settings-flow/project-settings.spec.ts b/connect-automation/test-suites/project-settings-flow/project-settings.spec.ts new file mode 100644 index 000000000..301115f05 --- /dev/null +++ b/connect-automation/test-suites/project-settings-flow/project-settings.spec.ts @@ -0,0 +1,52 @@ +import { CommonHelper } from '../../page-objects/common-page/common.helper'; +import { ProjectSettingsPageHelper } from '../../page-objects/project-settings/project-settings.helper' +import * as testData from '../../test-data/test-data.json'; +import { ConfigHelper } from '../../utils/config-helper'; + +describe('Connect App - Project Settings Tests:', () => { + /** + * Sets up the browser + */ + beforeAll(async () => { + // Precondition: User should be logged in with Customer Role. + const customerUser = ConfigHelper.getCopilotUser(); + await CommonHelper.login(customerUser.email, customerUser.password); + }); + + /** + * Logs out + */ + afterAll(async () => { + await CommonHelper.logout(); + }); + + beforeEach(async () => { + ProjectSettingsPageHelper.initialize(); + // Step Sequence #1: Go to the given app URL + await ProjectSettingsPageHelper.open(); + }); + + it('[TC_001] Should verify user can update Project Details ( eg NDA, Default Group)', async () => { + // Resetting Existing Project Settings + await ProjectSettingsPageHelper.resetSettings(); + + // Editing Project Settings + await ProjectSettingsPageHelper.editProjectSettings(testData.projectSettings); + }); + + it('[TC_002] Should verify system showing Billing Account expiry information.', async () => { + await ProjectSettingsPageHelper.verifyAccountExpiryInformation(); + }); + + it('[TC_003] Should verify user can Add/Edit/Delete/Download Files', async () => { + await ProjectSettingsPageHelper.verifyUserCanAddEditDeleteDownloadFiles(testData.projectSettings); + }); + + it('[TC_004] Should verify user can Add/Edit/Delete/Download Links', async () => { + await ProjectSettingsPageHelper.verifyUserCanAddEditDeleteDownloadLinks(testData.projectSettings); + }); + + it('[TC_005] Should verify user can Add Message with Files Attachment', async () => { + await ProjectSettingsPageHelper.verifyUserCanAddMessageWithFileAttachment(testData.projectSettings); + }); +}); diff --git a/connect-automation/utils/config-helper.ts b/connect-automation/utils/config-helper.ts index 86bff4b2b..46c22e821 100644 --- a/connect-automation/utils/config-helper.ts +++ b/connect-automation/utils/config-helper.ts @@ -105,4 +105,11 @@ export const ConfigHelper = { getCopilotManagerUser() { return this.getConfig().copilotManagerRole; }, + + /** + * Get Given Project URL + */ + getGivenProjectUrl(): string { + return this.getConfig().givenProjectUrl; + }, }; From a11b10f9a96b8af8c1eb836c968b522154987b29 Mon Sep 17 00:00:00 2001 From: Nursoltan Saipolda Date: Tue, 6 Jul 2021 15:42:06 +0800 Subject: [PATCH 21/24] fix failing tests circle ci (#4400) * fix failing tests circle ci * seperate project url Co-authored-by: tc_user --- connect-automation/config/config.json | 3 ++- .../project-creation-flow/projects/projects.helper.ts | 2 +- .../project-settings/project-settings.helper.ts | 5 +++-- .../page-objects/project-settings/project-settings.po.ts | 6 ++++-- .../project-settings-flow/project-settings.spec.ts | 8 ++++++-- connect-automation/utils/config-helper.ts | 7 +++++++ 6 files changed, 23 insertions(+), 8 deletions(-) diff --git a/connect-automation/config/config.json b/connect-automation/config/config.json index 5423dd226..06dd18781 100644 --- a/connect-automation/config/config.json +++ b/connect-automation/config/config.json @@ -23,5 +23,6 @@ "accountAndSecurityUrl": "https://connect.topcoder-dev.com/settings/account", "notificationsUrl": "https://connect.topcoder-dev.com/notifications", "allProjectsUrl": "https://connect.topcoder-dev.com/projects", - "givenProjectUrl": "https://connect.topcoder-dev.com/projects/17236" + "givenProjectUrl": "https://connect.topcoder-dev.com/projects/18013", + "expiredProjectUrl": "https://connect.topcoder-dev.com/projects/17236" } diff --git a/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts b/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts index 6c4bd1f30..f09726b9c 100644 --- a/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts +++ b/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts @@ -45,7 +45,7 @@ export class ProjectsHelper { * @param searchProject object for search */ public static async verifyProjectSearch(searchProject: ISearchProject) { - await BrowserHelper.sleep(3000); + await BrowserHelper.sleep(8000); const allProjectsBeforeSearch = await this.projectsPageObject.projectTitles(); const beforeSearchLength = allProjectsBeforeSearch.length; const firstProjectBeforeSearch = await allProjectsBeforeSearch[0].getText(); diff --git a/connect-automation/page-objects/project-settings/project-settings.helper.ts b/connect-automation/page-objects/project-settings/project-settings.helper.ts index a4189f429..0930acf25 100644 --- a/connect-automation/page-objects/project-settings/project-settings.helper.ts +++ b/connect-automation/page-objects/project-settings/project-settings.helper.ts @@ -14,9 +14,10 @@ export class ProjectSettingsPageHelper { /** * Open Home page + * @param expired */ - public static async open() { - await ProjectSettingsPageObject.open(); + public static async open(expired = false) { + await ProjectSettingsPageObject.open(expired); await CommonHelper.waitForPageDisplayed(); await BrowserHelper.sleep(10000); await CommonHelper.waitForElementToGetDisplayed(this.projectSettingsPageObject.getProjectMenu('Project Settings')); diff --git a/connect-automation/page-objects/project-settings/project-settings.po.ts b/connect-automation/page-objects/project-settings/project-settings.po.ts index eabfe25ff..6e9dffa83 100644 --- a/connect-automation/page-objects/project-settings/project-settings.po.ts +++ b/connect-automation/page-objects/project-settings/project-settings.po.ts @@ -5,9 +5,11 @@ import { ConfigHelper } from '../../utils/config-helper'; export class ProjectSettingsPageObject { /** * Open the Given Project URL + * @param expired */ - public static async open() { - await BrowserHelper.open(ConfigHelper.getGivenProjectUrl()); + public static async open(expired = false) { + const url = expired ? ConfigHelper.getExpiredProjectUrl() : ConfigHelper.getGivenProjectUrl() + await BrowserHelper.open(url); logger.info('User navigated to Project Page'); } diff --git a/connect-automation/test-suites/project-settings-flow/project-settings.spec.ts b/connect-automation/test-suites/project-settings-flow/project-settings.spec.ts index 301115f05..1230688d3 100644 --- a/connect-automation/test-suites/project-settings-flow/project-settings.spec.ts +++ b/connect-automation/test-suites/project-settings-flow/project-settings.spec.ts @@ -22,11 +22,11 @@ describe('Connect App - Project Settings Tests:', () => { beforeEach(async () => { ProjectSettingsPageHelper.initialize(); - // Step Sequence #1: Go to the given app URL - await ProjectSettingsPageHelper.open(); }); it('[TC_001] Should verify user can update Project Details ( eg NDA, Default Group)', async () => { + // Step Sequence #1: Go to the given app URL + await ProjectSettingsPageHelper.open(); // Resetting Existing Project Settings await ProjectSettingsPageHelper.resetSettings(); @@ -35,18 +35,22 @@ describe('Connect App - Project Settings Tests:', () => { }); it('[TC_002] Should verify system showing Billing Account expiry information.', async () => { + await ProjectSettingsPageHelper.open(true); await ProjectSettingsPageHelper.verifyAccountExpiryInformation(); }); it('[TC_003] Should verify user can Add/Edit/Delete/Download Files', async () => { + await ProjectSettingsPageHelper.open(); await ProjectSettingsPageHelper.verifyUserCanAddEditDeleteDownloadFiles(testData.projectSettings); }); it('[TC_004] Should verify user can Add/Edit/Delete/Download Links', async () => { + await ProjectSettingsPageHelper.open(); await ProjectSettingsPageHelper.verifyUserCanAddEditDeleteDownloadLinks(testData.projectSettings); }); it('[TC_005] Should verify user can Add Message with Files Attachment', async () => { + await ProjectSettingsPageHelper.open(); await ProjectSettingsPageHelper.verifyUserCanAddMessageWithFileAttachment(testData.projectSettings); }); }); diff --git a/connect-automation/utils/config-helper.ts b/connect-automation/utils/config-helper.ts index 46c22e821..99df6c111 100644 --- a/connect-automation/utils/config-helper.ts +++ b/connect-automation/utils/config-helper.ts @@ -112,4 +112,11 @@ export const ConfigHelper = { getGivenProjectUrl(): string { return this.getConfig().givenProjectUrl; }, + + /** + * Get Expired Project URL + */ + getExpiredProjectUrl(): string { + return this.getConfig().expiredProjectUrl; + }, }; From 433dcd5ff706fe896d70c6b034e4caa7f8b2cc20 Mon Sep 17 00:00:00 2001 From: Nursoltan Saipolda Date: Tue, 6 Jul 2021 16:27:10 +0800 Subject: [PATCH 22/24] fix tc_004 test (#4401) Co-authored-by: tc_user --- .../project-creation-flow/projects/projects.helper.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts b/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts index f09726b9c..8fa8b8e62 100644 --- a/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts +++ b/connect-automation/page-objects/project-creation-flow/projects/projects.helper.ts @@ -45,7 +45,7 @@ export class ProjectsHelper { * @param searchProject object for search */ public static async verifyProjectSearch(searchProject: ISearchProject) { - await BrowserHelper.sleep(8000); + await BrowserHelper.sleep(3000); const allProjectsBeforeSearch = await this.projectsPageObject.projectTitles(); const beforeSearchLength = allProjectsBeforeSearch.length; const firstProjectBeforeSearch = await allProjectsBeforeSearch[0].getText(); @@ -129,6 +129,7 @@ export class ProjectsHelper { * @param searchTerm search term */ private static async verifyProjectWithRef(searchTerm: string) { + await BrowserHelper.sleep(5000); const ref = await this.projectsPageObject.refText.getText(); expect(ref).toBe(searchTerm); From 6cbd9fabc9505e852b70073ae4c71d6299eec726 Mon Sep 17 00:00:00 2001 From: vikasrohit Date: Thu, 8 Jul 2021 15:34:53 +0530 Subject: [PATCH 23/24] Updated dead privacy link --- src/components/ConnectTerms/ConnectTerms.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ConnectTerms/ConnectTerms.jsx b/src/components/ConnectTerms/ConnectTerms.jsx index e84e3d614..3cdc283df 100644 --- a/src/components/ConnectTerms/ConnectTerms.jsx +++ b/src/components/ConnectTerms/ConnectTerms.jsx @@ -103,7 +103,7 @@ const ConnectTerms = () => (
  • PRIVACY.

    -

    User agrees to comply with all terms of the Topcoder Privacy Policy available at http://www.topcoder.com/community/how-it-works/privacy-policy/

    +

    User agrees to comply with all terms of the Topcoder Privacy Policy available at https://www.topcoder.com/policy

  • From da96bbec5a02e81ea6e995b758ea0f027be1ac9e Mon Sep 17 00:00:00 2001 From: vikasrohit Date: Mon, 12 Jul 2021 11:38:09 +0530 Subject: [PATCH 24/24] Feature/copilot feedback (#4408) * fix: issue #4399 * Temp deployable feature branch * fix: issue #4399 Co-authored-by: yoution --- .circleci/config.yml | 2 +- config/constants/dev.js | 1 + config/constants/master.js | 1 + config/constants/qa.js | 1 + src/components/TeamManagement/MemberItem.jsx | 5 ++++- src/components/TeamManagement/MemberItem.scss | 15 +++++++++++++++ src/components/TeamManagement/TeamManagement.jsx | 8 +++++++- src/config/constants.js | 1 + 8 files changed, 31 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b78db1519..bf7374129 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -188,7 +188,7 @@ workflows: - build-dev filters: &filters-dev branches: - only: ['dev', 'feature/billing_account_protection'] + only: ['dev', 'feature/copilot-feedback'] - deployTest01: context : org-global diff --git a/config/constants/dev.js b/config/constants/dev.js index 5776dd80a..e2f2ba1d6 100644 --- a/config/constants/dev.js +++ b/config/constants/dev.js @@ -32,6 +32,7 @@ module.exports = { ACCOUNTS_APP_URL : 'https://accounts-auth0.topcoder-dev.com', ACCOUNTS_APP_CONNECTOR_URL : 'https://accounts-auth0.topcoder-dev.com', + TYPEFORM_URL : 'https://topcoder.typeform.com/to/vgqiBXdk', FILE_PICKER_API_KEY: process.env.FILE_PICKER_API_KEY_DEV, FILE_PICKER_SUBMISSION_CONTAINER_NAME: 'submission-staging-dev', diff --git a/config/constants/master.js b/config/constants/master.js index a594a3545..ec979e937 100644 --- a/config/constants/master.js +++ b/config/constants/master.js @@ -33,6 +33,7 @@ module.exports = { ACCOUNTS_APP_URL : 'https://accounts-auth0.topcoder.com', ACCOUNTS_APP_CONNECTOR_URL : 'https://accounts-auth0.topcoder.com', + TYPEFORM_URL : 'https://topcoder.typeform.com/to/vgqiBXdk', FILE_PICKER_API_KEY: process.env.FILE_PICKER_API_KEY_PROD, FILE_PICKER_SUBMISSION_CONTAINER_NAME: 'submission-staging-prod', diff --git a/config/constants/qa.js b/config/constants/qa.js index 31d32cce2..d23d07bbb 100644 --- a/config/constants/qa.js +++ b/config/constants/qa.js @@ -32,6 +32,7 @@ module.exports = { ACCOUNTS_APP_URL : 'https://accounts.topcoder-qa.com/#!/member', ACCOUNTS_APP_CONNECTOR_URL : 'https://accounts.topcoder-qa.com/connector.html', + TYPEFORM_URL : 'https://topcoder.typeform.com/to/vgqiBXdk', FILE_PICKER_API_KEY: process.env.FILE_PICKER_API_KEY_QA, FILE_PICKER_SUBMISSION_CONTAINER_NAME: 'submission-staging-qa', diff --git a/src/components/TeamManagement/MemberItem.jsx b/src/components/TeamManagement/MemberItem.jsx index 036a9d26f..978b63699 100644 --- a/src/components/TeamManagement/MemberItem.jsx +++ b/src/components/TeamManagement/MemberItem.jsx @@ -5,12 +5,13 @@ require('moment-timezone') import UserTooltip from '../User/UserTooltip' import SunIcon from '../../assets/icons/daylight.svg' import MoonIcon from '../../assets/icons/moon.svg' +import FAQIcon from '../../assets/icons/faq.svg' import { getFullNameWithFallback } from '../../helpers/tcHelpers' import './MemberItem.scss' const MemberItem = (props) => { - const {usr, showEmailOnly} = props + const {usr, showEmailOnly, feedback} = props const userFullName = getFullNameWithFallback(usr) const workingHourStart = _.get(usr, 'workingHourStart') @@ -64,6 +65,7 @@ const MemberItem = (props) => { return (
    + {feedback && }
    {showEmailOnly? email :userFullName}
    {localWhStart && localWhEnd &&
    WH: {localWhStart} - {localWhEnd} {localTimeOffsetFormat}
    } @@ -84,6 +86,7 @@ MemberItem.propTypes = { PropTypes.number ]).isRequired, previewAvatar: PropTypes.bool, + feedback: PropTypes.string, showEmailOnly: PropTypes.bool, size: PropTypes.number } diff --git a/src/components/TeamManagement/MemberItem.scss b/src/components/TeamManagement/MemberItem.scss index f2d6ab976..70e9e3551 100644 --- a/src/components/TeamManagement/MemberItem.scss +++ b/src/components/TeamManagement/MemberItem.scss @@ -5,6 +5,7 @@ flex-direction: row; min-height: 51px; width: 100%; + position: relative; & + & { margin-top: 2 * $base-unit; @@ -20,6 +21,20 @@ } } +.feed-back { + position: absolute; + font-size: 12px; + right: 0px; + top: 4px; + display: flex; + align-items: center; + + svg { + width: 15px; + margin-top: -2px; + } +} + .member-detail { margin-left: 2 * $base-unit; overflow: hidden; diff --git a/src/components/TeamManagement/TeamManagement.jsx b/src/components/TeamManagement/TeamManagement.jsx index 019b26d88..5c07ff15d 100644 --- a/src/components/TeamManagement/TeamManagement.jsx +++ b/src/components/TeamManagement/TeamManagement.jsx @@ -9,6 +9,7 @@ import MemberItem from './MemberItem' import AddIcon from '../../assets/icons/icon-ui-bold-add.svg' import Dialog from './Dialog' import { PERMISSIONS } from '../../config/permissions' +import { TYPEFORM_URL } from '../../config/constants' import {hasPermission} from '../../helpers/permissions' import { getFullNameWithFallback } from '../../helpers/tcHelpers' @@ -213,8 +214,13 @@ class TeamManagement extends React.Component { return null } + let feedback = '' + if (member.handle !== currentUser.handle) { + feedback = `${TYPEFORM_URL}#copilot=${member.handle}&projectid=${projectId}&submitter=${currentUser.handle}` + } + return ( - + ) })} {copilotTeamInvites.map((invite, i) => { diff --git a/src/config/constants.js b/src/config/constants.js index d88942685..93382ec1c 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -764,6 +764,7 @@ export const TC_NOTIFICATION_URL = process.env.TC_NOTIFICATION_URL || `${TC_API_ export const TC_CDN_URL = process.env.TC_CDN_URL || `https://community-app.${DOMAIN}/api/cdn/public` +export const TYPEFORM_URL = process.env.TYPEFORM_URL || 'https://topcoder.typeform.com/to/vgqiBXdk' export const RESET_PASSWORD_URL = `https://accounts.${DOMAIN}/member/reset-password` export const VERIFY_EMAIL_URL = `http://www.${DOMAIN}/settings/account/changeEmail` export const TOPCODER_CONNECT_TERMS_URL = `https://connect.${DOMAIN}/terms`