@sap_oss/wdio-qmate-service
Version:
[](https://api.reuse.software/info/github.com/SAP/wdio-qmate-service)[](http
36 lines • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ControlFinder = void 0;
const LocatorDebug_1 = require("../utils/LocatorDebug");
class ControlFinder {
static retrieveUI5Controls(selector, rootElement) {
const nodes = ControlFinder.retrieveNodesFromBody(selector, rootElement) || [];
return ControlFinder.retrieveValidUI5Controls(nodes);
}
static retrieveNodesFromBody(selector, rootElement) {
// build smart css selector if possible
let cssSelector = "*";
if (selector.elementProperties?.id) {
if (selector.elementProperties.id.includes("*") && !selector.elementProperties.id.substring(1, selector.elementProperties.id.length - 1).includes("*")) {
const idWithoutWildcards = selector.elementProperties.id.replaceAll("*", "");
LocatorDebug_1.LocatorDebug.debugLog("shortened id is '", idWithoutWildcards, "' from '", selector.elementProperties.id, "'");
cssSelector = `*[id*="${idWithoutWildcards}"]`;
}
}
if (rootElement) {
return Array.from(rootElement.querySelectorAll(cssSelector));
}
const sapBodies = Array.from(document.getElementsByClassName("sapUiBody"));
return sapBodies.reduce((acc, body) => {
return acc.concat(Array.from(body.querySelectorAll(cssSelector)));
}, []);
}
static retrieveValidUI5Controls(nodes) {
return nodes.map((node) => ControlFinder.getUI5Control(node.getAttribute("id"))).filter((element) => element);
}
static getUI5Control(id) {
return (sap.ui.core?.Element?.getElementById || sap.ui.getCore().byId)(id);
}
}
exports.ControlFinder = ControlFinder;
//# sourceMappingURL=ControlFinder.js.map