tlc-core-automation-framework-v3-wdio-v9
Version:
Background: - We are following multi-layer automation framework architecture using webdriver.io + cucumber + typescript This core framework has been implemented with generic utility functions and cucumber steps, which can be easily consumed by another fra
105 lines • 12.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConfigHelper = void 0;
const winston_1 = require("winston");
const parse_data_1 = require("./parse-data");
const logger_1 = __importDefault(require("../reporting-helpers/logger"));
const data_helper_1 = require("./data-helper");
class ConfigHelper {
static isPageMappedInTheFramework(pageId, pageConfig) {
logger_1.default.info(`Page name : ${pageId}`);
const pageKeys = Object.keys(pageConfig);
let matchedPageId;
matchedPageId = pageKeys.find(pageKey => pageKey.trim() === pageId);
return !(matchedPageId === undefined);
}
static getValueFromJsonFileUsingKey(pageConfig, userKey) {
const requiredValue = pageConfig[userKey];
if (requiredValue === undefined)
throw (0, winston_1.error)(`${userKey} does not exists`);
return requiredValue;
}
static getLocatorFromCurrentPage(componentName, elementKey, data = {}) {
const componentElementMappingDir = parse_data_1.ParseData.getEnvData('PAGE_ELEMENTS_PATH');
const currentComponentElementMappings = `${componentElementMappingDir}${componentName}.json`;
const currentComponentElementConfig = parse_data_1.ParseData.getJsonFromFile(currentComponentElementMappings);
const commonComponentElementMappings = `${componentElementMappingDir}common.json`;
const commonComponentElementConfig = parse_data_1.ParseData.getJsonFromFile(commonComponentElementMappings);
if (currentComponentElementConfig[elementKey] === undefined) {
logger_1.default.info(`Element "${componentName}.${elementKey}" is NOT FOUND in mapping file : "${currentComponentElementMappings}"`);
logger_1.default.info(`Checking element "${componentName}.${elementKey}" in mapping file : "${commonComponentElementMappings}"`);
if (commonComponentElementConfig[elementKey] === undefined) {
logger_1.default.error(`Element "${componentName}.${elementKey}" is NOT FOUND in mapping file : "${commonComponentElementMappings}" as well`);
throw Error(`Element "${componentName}.${elementKey}" is NOT FOUND neither in "${currentComponentElementMappings}" nor in "${commonComponentElementMappings}"`);
}
else {
logger_1.default.info(`Element "${componentName}.${elementKey}" is FOUND in mapping file : "${commonComponentElementMappings}"`);
return this.generateLocatorForSelectedComponent(commonComponentElementMappings, elementKey, data);
}
}
else {
logger_1.default.info(`Element "${componentName}.${elementKey}" is FOUND in mapping file : "${currentComponentElementMappings}"`);
return this.generateLocatorForSelectedComponent(currentComponentElementMappings, elementKey, data);
}
}
static generateLocatorForSelectedComponent(fileLocation, elementKey, data = {}) {
let locatorsArray = [];
let masterLocator = "";
const absoluteFileLocation = `${process.cwd()}${fileLocation}`;
const jsonData = require(absoluteFileLocation);
let isDynamicPatternFound = false;
for (const kv of Object.keys(jsonData)) {
if (kv.trim() === elementKey) {
const myParentLocator = jsonData[kv];
for (const myKey of Object.keys(myParentLocator)) {
if (myKey === 'dynamicPattern') {
isDynamicPatternFound = true;
logger_1.default.info(`Building locator using dynamic pattern, for element ${elementKey}`);
continue;
}
const newKey = (myKey === 'parent-data-test-id') ? 'data-test-id' : myKey;
let locator = null;
if (myKey === 'parent-data-test-id')
locator = (newKey === 'css' || newKey === 'xpath') ? myParentLocator[newKey] : `//*[@${newKey}='${myParentLocator[myKey]}']`;
else if (myKey === 'custom-path')
locator = myParentLocator[newKey];
else
locator = (newKey === 'css' || newKey === 'xpath') ? myParentLocator[newKey] : `//*[@${newKey}='${myParentLocator[newKey]}']`;
locatorsArray.push(locator);
}
}
}
masterLocator = locatorsArray.join('');
masterLocator = (isDynamicPatternFound && data_helper_1.DataHelper.isKeyExistsInMyCollection(data, 'param')) ? (masterLocator.replaceAll('?', data_helper_1.DataHelper.getValueFromCollection(data, 'param'))) : masterLocator;
logger_1.default.info(`Master Locator for element "${elementKey}" : ${masterLocator}`);
return masterLocator;
}
static getCurrentPageId(currentUrl) {
// const currentUrl = await getCurrentUrl();
const allResources = currentUrl.split('/');
const resourcesCount = allResources.length;
let currentPageId = allResources[resourcesCount - 1];
return (currentPageId === "") ? "home" : currentPageId;
}
static getPageConfig(pageObject, data = {}) {
let componentName = "common";
let elementKey = "";
if (pageObject.split('.').length === 1) {
logger_1.default.info(`Working with common elements : "${pageObject}"`);
elementKey = pageObject.split('.')[0];
}
else if (pageObject.split('.').length === 2) {
componentName = pageObject.split('.')[0];
elementKey = pageObject.split('.')[1];
}
else
throw Error(`PageObject "${pageObject}" is NOT in correct format "element" or "page.element"`);
let selector = ConfigHelper.getLocatorFromCurrentPage(componentName, elementKey, data);
return { pageId: componentName, elementKey: elementKey, selector: selector, param: data };
}
}
exports.ConfigHelper = ConfigHelper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lMmUvaGVscGVycy9jb21tb24taGVscGVycy9jb25maWctaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFDQUE4QjtBQUM5Qiw2Q0FBdUM7QUFDdkMseUVBQWlEO0FBRWpELCtDQUF5QztBQUd6QyxNQUFhLFlBQVk7SUFFZCxNQUFNLENBQUMsMEJBQTBCLENBQUMsTUFBYyxFQUFFLFVBQWtDO1FBQ3ZGLGdCQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksYUFBcUIsQ0FBQztRQUMxQixhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUNwRSxPQUFPLENBQUMsQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxVQUFrQyxFQUFFLE9BQWU7UUFDMUYsTUFBTSxhQUFhLEdBQVcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksYUFBYSxLQUFLLFNBQVM7WUFDM0IsTUFBTSxJQUFBLGVBQUssRUFBQyxHQUFHLE9BQU8sa0JBQWtCLENBQUMsQ0FBQTtRQUM3QyxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUFDLHlCQUF5QixDQUFDLGFBQXFCLEVBQUUsVUFBa0IsRUFBRSxPQUUvRSxFQUFFO1FBRUYsTUFBTSwwQkFBMEIsR0FBRyxzQkFBUyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sK0JBQStCLEdBQUcsR0FB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