1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.multiremoteHandler = exports.elementErrorHandler = void 0;
|
7 |
|
8 | var _refetchElement = _interopRequireDefault(require("./utils/refetchElement"));
|
9 |
|
10 | var _implicitWait = _interopRequireDefault(require("./utils/implicitWait"));
|
11 |
|
12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13 |
|
14 | const 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 |
|
44 | exports.elementErrorHandler = elementErrorHandler;
|
45 |
|
46 | const 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 |
|
55 | exports.multiremoteHandler = multiremoteHandler; |
\ | No newline at end of file |