UNPKG

moh-common-lib

Version:

A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).

521 lines (511 loc) 22.6 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('protractor')) : typeof define === 'function' && define.amd ? define('moh-common-lib/e2e', ['exports', 'protractor'], factory) : (factory((global['moh-common-lib'] = global['moh-common-lib'] || {}, global['moh-common-lib'].e2e = {}),global.protractor)); }(this, (function (exports,protractor) { 'use strict'; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ function __awaiter(thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(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 }; } } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * AbstractTestPage provides common functionality for e2e tests that make use of * the MoH Common Lib. For example, `getNameComponent()` and * `getNameComponentVal()` both correspond to the NameComponent. * @abstract */ var /** * AbstractTestPage provides common functionality for e2e tests that make use of * the MoH Common Lib. For example, `getNameComponent()` and * `getNameComponentVal()` both correspond to the NameComponent. * @abstract */ AbstractTestPage = /** @class */ (function () { function AbstractTestPage() { /** * Clicking this button should complete the page, navigate to the next one. * We default it to `.form-bar .submit` but you may overwrite as necessary. */ this.continueButton = protractor.element(protractor.by.css('.form-bar .submit')); /** * This is the 'Skip To Content' button for Screen Readers that appears when * tabbed to. May be overwritten as necessary. */ this.skipToContentButton = protractor.element(protractor.by.css('.skip-to-content')); } /** * @return {?} */ AbstractTestPage.prototype.continue = /** * @return {?} */ function () { this.continueButton.click(); }; /** * @return {?} */ AbstractTestPage.prototype.getContinueButton = /** * @return {?} */ function () { return this.continueButton; }; /** Scrolls down to the bottom of the page */ /** * Scrolls down to the bottom of the page * @return {?} */ AbstractTestPage.prototype.scrollDown = /** * Scrolls down to the bottom of the page * @return {?} */ function () { protractor.browser.executeScript('window.scrollTo(0, document.body.scrollHeight)'); }; /** * @return {?} */ AbstractTestPage.prototype.clickSkipToContent = /** * @return {?} */ function () { this.skipToContentButton.click(); }; /** * **NameComponent** - Returns the NameComponent for an associated human * readable label. If the label is a duplicate it will grab the first one * only. * * TODO: Update to "common-name" component when it's imported from PRIME * * @param labelName Human redable label name. */ /** * **NameComponent** - Returns the NameComponent for an associated human * readable label. If the label is a duplicate it will grab the first one * only. * * TODO: Update to "common-name" component when it's imported from PRIME * * @param {?} labelName Human redable label name. * @return {?} */ AbstractTestPage.prototype.getNameComponent = /** * **NameComponent** - Returns the NameComponent for an associated human * readable label. If the label is a duplicate it will grab the first one * only. * * TODO: Update to "common-name" component when it's imported from PRIME * * @param {?} labelName Human redable label name. * @return {?} */ function (labelName) { return __awaiter(this, void 0, void 0, function () { var label, _a, _b, _c; return __generator(this, function (_d) { switch (_d.label) { case 0: label = protractor.element.all(protractor.by.cssContainingText('lib-prime-name label', labelName)).first(); _a = protractor.element; _c = (_b = protractor.by).id; return [4 /*yield*/, label.getAttribute('for')]; case 1: return [2 /*return*/, _a.apply(void 0, [_c.apply(_b, [_d.sent()])])]; } }); }); }; /** * **NameComponent** - Returns the value within a given NameComponent * * TODO: Update to "common-name" component when it's imported from PRIME * * @param labelName Human readable label name */ /** * **NameComponent** - Returns the value within a given NameComponent * * TODO: Update to "common-name" component when it's imported from PRIME * * @param {?} labelName Human readable label name * @return {?} */ AbstractTestPage.prototype.getNameComponentVal = /** * **NameComponent** - Returns the value within a given NameComponent * * TODO: Update to "common-name" component when it's imported from PRIME * * @param {?} labelName Human readable label name * @return {?} */ function (labelName) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.getNameComponent(labelName)]; case 1: return [2 /*return*/, (_a.sent()).getAttribute('value')]; } }); }); }; /** * @return {?} */ AbstractTestPage.prototype.formErrors = /** * @return {?} */ function () { return protractor.$$('[role=alert] .text-danger'); }; /** * Selects from an ng-select component. This includes DropdownComponent * others, like country, province, etc. * * TODO - Need to test this works! Right now just copied from GitHub with * minor tweaks. IDEA - Mirror getNameComponent, where we lookup via the label * text and use the 'for' attribute. * * @param labelId corresponds to labelForId on the <ng-select> * @param optionText the option we want to select */ /** * Selects from an ng-select component. This includes DropdownComponent * others, like country, province, etc. * * TODO - Need to test this works! Right now just copied from GitHub with * minor tweaks. IDEA - Mirror getNameComponent, where we lookup via the label * text and use the 'for' attribute. * * @param {?} labelId corresponds to labelForId on the <ng-select> * @param {?} optionText the option we want to select * @return {?} */ AbstractTestPage.prototype.selectOption = /** * Selects from an ng-select component. This includes DropdownComponent * others, like country, province, etc. * * TODO - Need to test this works! Right now just copied from GitHub with * minor tweaks. IDEA - Mirror getNameComponent, where we lookup via the label * text and use the 'for' attribute. * * @param {?} labelId corresponds to labelForId on the <ng-select> * @param {?} optionText the option we want to select * @return {?} */ function (labelId, optionText) { protractor.element(protractor.by.css("ng-select[id=\"" + labelId + "\"]")).click(); // opens dropdown protractor.element(protractor.by.cssContainingText('span.ng-option-label', optionText)).click(); // selects option by provided text }; /** * Works on same NgSelect components but it sends custom text instead of * selecting a given choice. * @param labelId corresponds to labelForId on the <ng-select> * @param data the text we want to type */ /** * Works on same NgSelect components but it sends custom text instead of * selecting a given choice. * @param {?} labelId corresponds to labelForId on the <ng-select> * @param {?} data the text we want to type * @return {?} */ AbstractTestPage.prototype.typeOption = /** * Works on same NgSelect components but it sends custom text instead of * selecting a given choice. * @param {?} labelId corresponds to labelForId on the <ng-select> * @param {?} data the text we want to type * @return {?} */ function (labelId, data) { protractor.element(protractor.by.css("ng-select[id=\"" + labelId + "\"]")).click(); // opens dropdown protractor.element(protractor.by.css("input[role=\"combobox\"]")).sendKeys(data); // type option protractor.browser.actions().sendKeys(protractor.protractor.Key.ENTER).perform(); // hit enter key }; /** * Enter text into an input via ng-reflect-name component * @param refNameVal Value of ng-reflect-name component * @param text Text to enter into the input */ /** * Enter text into an input via ng-reflect-name component * @param {?} refNameVal Value of ng-reflect-name component * @param {?} text Text to enter into the input * @return {?} */ AbstractTestPage.prototype.typeText = /** * Enter text into an input via ng-reflect-name component * @param {?} refNameVal Value of ng-reflect-name component * @param {?} text Text to enter into the input * @return {?} */ function (refNameVal, text) { protractor.element(protractor.by.css("input[ng-reflect-name^=\"" + refNameVal + "\"]")).sendKeys(text); }; /** * Clicks the button based on the text specified * @param classVal Human readable class value for a button * @param text Text inside the button */ /** * Clicks the button based on the text specified * @param {?} classVal Human readable class value for a button * @param {?} text Text inside the button * @return {?} */ AbstractTestPage.prototype.clickButton = /** * Clicks the button based on the text specified * @param {?} classVal Human readable class value for a button * @param {?} text Text inside the button * @return {?} */ function (classVal, text) { protractor.element(protractor.by.cssContainingText("button[class*=\"" + classVal + "\"]", text)).click(); }; /** * Clicks the check box based on the ng-reflect-name component * @param refNameVal Value of ng-reflect-name component */ /** * Clicks the check box based on the ng-reflect-name component * @param {?} refNameVal Value of ng-reflect-name component * @return {?} */ AbstractTestPage.prototype.clickCheckBox = /** * Clicks the check box based on the ng-reflect-name component * @param {?} refNameVal Value of ng-reflect-name component * @return {?} */ function (refNameVal) { protractor.element(protractor.by.css("input[ng-reflect-name=\"" + refNameVal + "\"]")).click(); }; /** * Clicks the checkbox which means the user agrees with the info collection notice. * InfoColectionNoticeComponent <common-collection-modal> */ /** * Clicks the checkbox which means the user agrees with the info collection notice. * InfoColectionNoticeComponent <common-collection-modal> * @return {?} */ AbstractTestPage.prototype.agreeConsentModal = /** * Clicks the checkbox which means the user agrees with the info collection notice. * InfoColectionNoticeComponent <common-collection-modal> * @return {?} */ function () { protractor.element(protractor.by.css('label[for="agree"]')).element(protractor.by.css('strong')).click(); }; /** * Clicks continue inside the modal * InfoColectionNoticeComponent <common-collection-modal> */ /** * Clicks continue inside the modal * InfoColectionNoticeComponent <common-collection-modal> * @return {?} */ AbstractTestPage.prototype.clickConsentModalContinue = /** * Clicks continue inside the modal * InfoColectionNoticeComponent <common-collection-modal> * @return {?} */ function () { protractor.element(protractor.by.css('div[class="modal-footer"]')).element(protractor.by.css('button[type="submit"]')).click(); }; /** * Checks if the consent modal is currently displayed or not */ /** * Checks if the consent modal is currently displayed or not * @return {?} */ AbstractTestPage.prototype.checkConsentModal = /** * Checks if the consent modal is currently displayed or not * @return {?} */ function () { return protractor.element(protractor.by.css('common-consent-modal')).element(protractor.by.css('div[aria-labelledby="myLargeModalLabel"]')).isDisplayed(); }; /** * Scrolls up to the top of the page */ /** * Scrolls up to the top of the page * @return {?} */ AbstractTestPage.prototype.scrollUp = /** * Scrolls up to the top of the page * @return {?} */ function () { protractor.browser.executeScript('window.scrollTo(0,0)'); }; /** * Types the text inside the first ocurrence of input field * @param refNameVal Value of ng-reflect-name component * @param text Text to enter into the input */ /** * Types the text inside the first ocurrence of input field * @param {?} refNameVal Value of ng-reflect-name component * @param {?} text Text to enter into the input * @return {?} */ AbstractTestPage.prototype.typeTextFirstOccurrence = /** * Types the text inside the first ocurrence of input field * @param {?} refNameVal Value of ng-reflect-name component * @param {?} text Text to enter into the input * @return {?} */ function (refNameVal, text) { protractor.element.all(protractor.by.css("input[ng-reflect-name^=\"" + refNameVal + "\"]")).first().sendKeys(text); }; /** * Clicks the link based from the label and text provided * @param label * @param text */ /** * Clicks the link based from the label and text provided * @param {?} label * @param {?} text * @return {?} */ AbstractTestPage.prototype.clickLink = /** * Clicks the link based from the label and text provided * @param {?} label * @param {?} text * @return {?} */ function (label, text) { protractor.element(protractor.by.cssContainingText(label, text)).click(); }; /** * Counts the number of options inside a dropdown box * @param refNameVal */ /** * Counts the number of options inside a dropdown box * @param {?} refNameVal * @return {?} */ AbstractTestPage.prototype.countLength = /** * Counts the number of options inside a dropdown box * @param {?} refNameVal * @return {?} */ function (refNameVal) { return protractor.$$("select[ng-reflect-name^=\"" + refNameVal + "\"] option"); }; return AbstractTestPage; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ exports.AbstractTestPage = AbstractTestPage; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=moh-common-lib-e2e.umd.js.map