@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
34 lines • 3.59 kB
JavaScript
import logger from '@wdio/logger';
const log = logger('webdriverio');
/**
* wait on element if:
* - elementId couldn't be fetched in the first place
* - command is not explicit wait command for existance or displayedness
*/
export default async function implicitWait(currentElement, commandName) {
if (!currentElement.elementId && !commandName.match(/(waitUntil|waitFor|isExisting|is?\w+Displayed|is?\w+Clickable)/)) {
log.debug(`command ${commandName} was called on an element ("${currentElement.selector}") ` +
'that wasn\'t found, waiting for it...');
try {
await currentElement.waitForExist();
/**
* if waitForExist was successful requery element and assign elementId to the scope
*/
return currentElement.parent.$(currentElement.selector);
}
catch {
if (currentElement.selector.toString().includes('this.previousElementSibling')) {
throw new Error(`Can't call ${commandName} on previous element of element with selector "${currentElement.parent.selector}" because sibling wasn't found`);
}
if (currentElement.selector.toString().includes('this.nextElementSibling')) {
throw new Error(`Can't call ${commandName} on next element of element with selector "${currentElement.parent.selector}" because sibling wasn't found`);
}
if (currentElement.selector.toString().includes('this.parentElement')) {
throw new Error(`Can't call ${commandName} on parent element of element with selector "${currentElement.parent.selector}" because it wasn't found`);
}
throw new Error(`Can't call ${commandName} on element with selector "${currentElement.selector}" because element wasn't found`);
}
}
return currentElement;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wbGljaXRXYWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2ltcGxpY2l0V2FpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFFakMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRWpDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUUsY0FBbUMsRUFBRSxXQUFtQjtJQUNoRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0VBQWdFLENBQUMsRUFBRSxDQUFDO1FBQ3BILEdBQUcsQ0FBQyxLQUFLLENBQ0wsV0FBVyxXQUFXLCtCQUErQixjQUFjLENBQUMsUUFBUSxLQUFLO1lBQ2pGLHVDQUF1QyxDQUMxQyxDQUFBO1FBRUQsSUFBSSxDQUFDO1lBQ0QsTUFBTSxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUE7WUFDbkM7O2VBRUc7WUFDSCxPQUFRLGNBQWMsQ0FBQyxNQUE4QixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDcEYsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNMLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDO2dCQUM3RSxNQUFNLElBQUksS0FBSyxDQUNYLGNBQWMsV0FBVyxrREFBbUQsY0FBYyxDQUFDLE1BQThCLENBQUMsUUFBUSxnQ0FBZ0MsQ0FBQyxDQUFBO1lBQzNLLENBQUM7WUFFRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztnQkFDekUsTUFBTSxJQUFJLEtBQUssQ0FDWCxjQUFjLFdBQVcsOENBQStDLGNBQWMsQ0FBQyxNQUE4QixDQUFDLFFBQVEsZ0NBQWdDLENBQUMsQ0FBQTtZQUN2SyxDQUFDO1lBRUQsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQ1gsY0FBYyxXQUFXLGdEQUFpRCxjQUFjLENBQUMsTUFBOEIsQ0FBQyxRQUFRLDJCQUEyQixDQUFDLENBQUE7WUFDcEssQ0FBQztZQUVELE1BQU0sSUFBSSxLQUFLLENBQ1gsY0FBYyxXQUFXLDhCQUE4QixjQUFjLENBQUMsUUFBUSxnQ0FBZ0MsQ0FBQyxDQUFBO1FBQ3ZILENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxjQUFjLENBQUE7QUFDekIsQ0FBQyJ9