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
JavaScript
(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