UNPKG

@luminati-io/webdriverio8

Version:

Next-gen browser and mobile automation test framework for Node.js

58 lines 5.06 kB
import refetchElement from './utils/refetchElement.js'; import implicitWait from './utils/implicitWait.js'; import { getBrowserObject } from './utils/index.js'; import { ELEMENT_KEY } from './constants.js'; /** * This method is an command wrapper for elements that checks if a command is called * that wasn't found on the page and automatically waits for it * * @param {Function} fn command shim */ export const elementErrorHandler = (fn) => (commandName, commandFn) => { return function elementErrorHandlerCallback(...args) { return fn(commandName, async function elementErrorHandlerCallbackFn() { const element = await implicitWait(this, commandName); this.elementId = element.elementId; this[ELEMENT_KEY] = element.elementId; try { const result = await fn(commandName, commandFn).apply(this, args); /** * assume Safari responses like { error: 'no such element', message: '', stacktrace: '' } * as `stale element reference` */ const caps = getBrowserObject(this).capabilities; if (caps && caps.browserName === 'safari' && result && result.error === 'no such element') { const errorName = 'stale element reference'; const err = new Error(errorName); err.name = errorName; throw err; } return result; } catch (err) { if (err.name === 'stale element reference') { const element = await refetchElement(this, commandName); this.elementId = element.elementId; this.parent = element.parent; return await fn(commandName, commandFn).apply(this, args); } throw err; } }).apply(this); }; }; /** * handle single command calls from multiremote instances */ export const multiremoteHandler = (wrapCommand) => (commandName) => { return wrapCommand(commandName, function (...args) { // @ts-ignore const commandResults = this.instances.map((instanceName) => { // @ts-ignore ToDo(Christian) return this[instanceName][commandName](...args); }); return Promise.all(commandResults); }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxjQUFjLE1BQU0sMkJBQTJCLENBQUE7QUFDdEQsT0FBTyxZQUFZLE1BQU0seUJBQXlCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTVDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBbUIsRUFBRSxTQUFtQixFQUFFLEVBQUU7SUFDOUYsT0FBTyxTQUFTLDJCQUEyQixDQUE2QixHQUFHLElBQVc7UUFDbEYsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSw2QkFBNkI7WUFDL0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQTtZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQTtZQUVyQyxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBRWpFOzs7bUJBR0c7Z0JBQ0gsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBd0MsQ0FBQTtnQkFDNUUsSUFDSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRO29CQUNyQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxpQkFBaUIsRUFDOUMsQ0FBQztvQkFDQyxNQUFNLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQTtvQkFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7b0JBQ2hDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFBO29CQUNwQixNQUFNLEdBQUcsQ0FBQTtnQkFDYixDQUFDO2dCQUVELE9BQU8sTUFBTSxDQUFBO1lBQ2pCLENBQUM7WUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO2dCQUNoQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUsseUJBQXlCLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO29CQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUE7b0JBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQTtvQkFFNUIsT0FBTyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDN0QsQ0FBQztnQkFDRCxNQUFNLEdBQUcsQ0FBQTtZQUNiLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFbEIsQ0FBQyxDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUM5QixXQUFxQixFQUN2QixFQUFFLENBQUMsQ0FBQyxXQUFzQyxFQUFFLEVBQUU7SUFDNUMsT0FBTyxXQUFXLENBQUMsV0FBVyxFQUFFLFVBQWdELEdBQUcsSUFBVztRQUMxRixhQUFhO1FBQ2IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDL0QsNkJBQTZCO1lBQzdCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDdEMsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUEifQ==