UNPKG

1.78 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.multiremoteHandler = exports.elementErrorHandler = void 0;
7
8var _refetchElement = _interopRequireDefault(require("./utils/refetchElement"));
9
10var _implicitWait = _interopRequireDefault(require("./utils/implicitWait"));
11
12function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14const elementErrorHandler = fn => (commandName, commandFn) => {
15 return function elementErrorHandlerCallback(...args) {
16 return fn(commandName, async function elementErrorHandlerCallbackFn() {
17 const element = await (0, _implicitWait.default)(this, commandName);
18 this.elementId = element.elementId;
19
20 try {
21 const result = await fn(commandName, commandFn).apply(this, args);
22
23 if (result && result.error === 'no such element') {
24 const err = new Error();
25 err.name = 'stale element reference';
26 throw err;
27 }
28
29 return result;
30 } catch (error) {
31 if (error.name === 'stale element reference') {
32 const element = await (0, _refetchElement.default)(this, commandName);
33 this.elementId = element.elementId;
34 this.parent = element.parent;
35 return await fn(commandName, commandFn).apply(this, args);
36 }
37
38 throw error;
39 }
40 }).apply(this);
41 };
42};
43
44exports.elementErrorHandler = elementErrorHandler;
45
46const multiremoteHandler = wrapCommand => commandName => {
47 return wrapCommand(commandName, function (...args) {
48 const commandResults = this.instances.map(instanceName => {
49 return this[instanceName][commandName](...args);
50 });
51 return Promise.all(commandResults);
52 });
53};
54
55exports.multiremoteHandler = multiremoteHandler;
\No newline at end of file