wdio-ui5-service
Version:
WebdriverIO plugin for testing UI5 browser-based apps
48 lines • 2.35 kB
JavaScript
async function clientSide_allControls(controlSelector, browserInstance) {
controlSelector = await Promise.resolve(controlSelector); // to plug into fluent async api
return await browserInstance.execute(async function wdi5_allControls(controlSelector) {
if (!window.wdi5 || !window.bridge) {
// Local checkForWdi5BrowserReady.js for better performance
const wdi5MissingErr = new Error(`WDI5 is not available in the browser context! window.wdi5: ${!!window.wdi5} | window.bridge: ${!!window.bridge}`);
console.error(wdi5MissingErr); // eslint-disable-line no-console
throw wdi5MissingErr;
}
const waitForUI5Options = Object.assign({}, window.wdi5.waitForUI5Options);
if (controlSelector.timeout) {
waitForUI5Options.timeout = controlSelector.timeout;
}
try {
await window.bridge.waitForUI5(waitForUI5Options);
}
catch (error) {
return window.wdi5.errorHandling(error);
}
window.wdi5.Log.info("[browser wdi5] locating " + JSON.stringify(controlSelector));
controlSelector.selector = window.wdi5.createMatcher(controlSelector.selector);
let domElements;
try {
// @ts-expect-error: Property 'findAllDOMElementsByControlSelector' does not exist on type 'Bridge'
domElements = await window.bridge.findAllDOMElementsByControlSelector(controlSelector);
}
catch (error) {
return window.wdi5.errorHandling(error);
}
// ui5 control
const returnElements = [];
domElements.forEach((domElement) => {
const ui5Control = window.wdi5.getUI5CtlForWebObj(domElement);
const id = ui5Control.getId();
window.wdi5.Log.info(`[browser wdi5] control with id: ${id} located!`);
const aProtoFunctions = window.wdi5.retrieveControlMethods(ui5Control);
// @type [String, String?, String, "Array of Strings"]
returnElements.push({
domElement: domElement,
id: id,
aProtoFunctions: aProtoFunctions
});
});
return { status: 0, result: returnElements };
}, controlSelector);
}
export { clientSide_allControls };
//# sourceMappingURL=allControls.js.map