UNPKG

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
"use strict"; 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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