UNPKG

@nice-digital/wdio-cucumber-steps

Version:

Shared step definitions for Cucumber JS BDD tests in WebdriverIO

42 lines 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.scrollIntoView = exports.scrollNow = void 0; const checkIfElementExists_1 = require("../lib/checkIfElementExists"); const scrollIntoViewNICE = (selector, contextSelector) => { var _a; let element; if (selector.indexOf("=") > -1) { // WDIO selectors can be in the form TAG=TEXT so parse these out into xpath // selectors so we can execute this in the browser const parts = selector.split("="), tag = parts[0] || "*", text = parts[1], xPath = `.//${tag}[normalize-space() = "${text}"]`; element = document.evaluate(xPath, contextSelector ? document.querySelector(contextSelector) || document : document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; element.scrollIntoView(); } else { element = (contextSelector ? (_a = document.querySelector(contextSelector)) === null || _a === void 0 ? void 0 : _a.querySelector(selector) : document.querySelector(selector)); element.scrollIntoView(); } return 0; }; async function scrollNow(selector, contextSelector) { await (0, checkIfElementExists_1.checkIfElementExists)(selector); await browser.execute(scrollIntoViewNICE, selector, contextSelector); return true; } exports.scrollNow = scrollNow; /** * Waits for the given element to be scrolled to. * The wait is required as we're using smooth scrolling. * * @param {String} selector * @param {Number} timeoutMs Timeout for waiting, in milliseconds */ async function scrollIntoView(selector, contextSelector) { await browser.waitUntil(async () => await scrollNow(selector, contextSelector)); } exports.scrollIntoView = scrollIntoView; //# sourceMappingURL=scrollIntoView.js.map