UNPKG

@luminati-io/webdriverio8

Version:

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

66 lines 4.65 kB
/** * * Sets the timeouts associated with the current session, timeout durations control such * behaviour as timeouts on script injection, document navigation, and element retrieval. * For more information and examples, see [timeouts guide](https://webdriver.io/docs/timeouts#selenium-timeouts). * * :::info * * It is not recommended to set `implicit` timeouts as they impact WebdriverIO's behavior * and can cause errors in certain commands, e.g. `waitForExist` with reverse flag. * * ::: * * <example> :setTimeout.js it('should change timeout duration for session with long code duration', async () => { await browser.setTimeout({ 'pageLoad': 10000, 'script': 60000 }); // Execute code which takes a long time await browser.executeAsync((done) => { console.log('Wake me up before you go!'); setTimeout(done, 59000); }); }); * </example> * * @param {Timeouts} timeouts Object containing session timeout values * @param {Number=} timeouts.implicit Time in milliseconds to retry the element location strategy when finding an element. * @param {Number=} timeouts.pageLoad Time in milliseconds to wait for the document to finish loading. * @param {Number=} timeouts.script Scripts injected with [`execute`](https://webdriver.io/docs/api/browser/execute) or [`executeAsync`](https://webdriver.io/docs/api/browser/executeAsync) will run until they hit the script timeout duration, which is also given in milliseconds. * @see https://w3c.github.io/webdriver/#set-timeouts * */ export async function setTimeout(timeouts) { if (typeof timeouts !== 'object') { throw new Error('Parameter for "setTimeout" command needs to be an object'); } /** * If value is not an integer, or it is less than 0 or greater than the maximum safe * integer, return error with error code invalid argument. */ const timeoutValues = Object.values(timeouts); if (timeoutValues.length && timeoutValues.every(timeout => typeof timeout !== 'number' || timeout < 0 || timeout > Number.MAX_SAFE_INTEGER)) { throw new Error('Specified timeout values are not valid integer (see https://webdriver.io/docs/api/browser/setTimeout for documentation).'); } const implicit = timeouts.implicit; // Previously also known as `page load` with JsonWireProtocol const pageLoad = timeouts['page load'] || timeouts.pageLoad; const script = timeouts.script; const setTimeouts = this.setTimeouts.bind(this); /** * JsonWireProtocol action */ if (!this.isW3C) { await Promise.all([ isFinite(implicit) && setTimeouts('implicit', implicit), isFinite(pageLoad) && setTimeouts('page load', pageLoad), isFinite(script) && setTimeouts('script', script), ].filter(Boolean)); return; } return setTimeouts(implicit, pageLoad, script); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0VGltZW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9icm93c2VyL3NldFRpbWVvdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFFSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FFNUIsUUFBMkI7SUFFM0IsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUE7SUFDL0UsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0MsSUFBSSxhQUFhLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUMxSSxNQUFNLElBQUksS0FBSyxDQUFDLDBIQUEwSCxDQUFDLENBQUE7SUFDL0ksQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFrQixDQUFBO0lBQzVDLDZEQUE2RDtJQUM3RCxNQUFNLFFBQVEsR0FBSSxRQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUE7SUFDcEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQWdCLENBQUE7SUFDeEMsTUFBTSxXQUFXLEdBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFcEQ7O09BRUc7SUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2QsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQztZQUN4RCxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7U0FDcEQsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNsQixPQUFNO0lBQ1YsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDbEQsQ0FBQyJ9