UNPKG

webdriverio-automation

Version:

WebdriverIO-Automation android ios project

43 lines (34 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = executeScript; var _executeScript = _interopRequireDefault(require("../scripts/executeScript")); var _utils = require("../utils"); var _constants = require("../constants"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } async function executeScript({ script, args }) { const page = this.getPageHandle(true); const scriptTimeout = this.timeouts.get('script'); script = script.trim(); if (script.startsWith('return (')) { script = script.slice(7); } if (script.startsWith('return')) { script = `(function () { ${script} }).apply(null, arguments)`; } const executePromise = page.$eval('html', _executeScript.default, script, _constants.SERIALIZE_PROPERTY, _constants.SERIALIZE_FLAG, ..._utils.transformExecuteArgs.call(this, args)); let executeTimeout; const timeoutPromise = new Promise((_, reject) => { executeTimeout = setTimeout(() => { const timeoutError = `script timeout${this.activeDialog ? ' reason: a browser dialog has opened as result of a executeScript call' : ''}`; return reject(new Error(timeoutError)); }, scriptTimeout); }); const result = await Promise.race([executePromise, timeoutPromise]); clearTimeout(executeTimeout); return _utils.transformExecuteResult.call(this, page, result); }