@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
52 lines • 3.63 kB
JavaScript
import logger from '@wdio/logger';
const log = logger('webdriverio');
/**
*
* Creates a new Selenium session with your current capabilities. This is useful if you
* test highly stateful application where you need to clean the browser session between
* the tests in your spec file to avoid creating hundreds of single test files with WDIO.
* Be careful though, this command affects your test time tremendously since spawning
* new Selenium sessions is very time consuming especially when using cloud services.
*
* <example>
:reloadSync.js
it('should reload my session with current capabilities', async () => {
console.log(browser.sessionId) // outputs: e042b3f3cd5a479da4e171825e96e655
await browser.reloadSession()
console.log(browser.sessionId) // outputs: 9a0d9bf9d4864160aa982c50cf18a573
})
* </example>
*
* @alias browser.reloadSession
* @type utility
*
*/
export async function reloadSession() {
const oldSessionId = this.sessionId;
/**
* end current running session, if session already gone suppress exceptions
*/
try {
await this.deleteSession({ shutdownDriver: false });
}
catch (err) {
/**
* ignoring all exceptions that could be caused by browser.deleteSession()
* there maybe times where session is ended remotely, browser.deleteSession() will fail in this case)
* this can be worked around in code but requires a lot of overhead
*/
log.warn(`Suppressing error closing the session: ${err.stack}`);
}
if (this.puppeteer?.isConnected()) {
this.puppeteer.disconnect();
log.debug('Disconnected puppeteer session');
}
const ProtocolDriver = (await import(this.options.automationProtocol)).default;
await ProtocolDriver.reloadSession(this);
const options = this.options;
if (Array.isArray(options.onReload) && options.onReload.length) {
await Promise.all(options.onReload.map((hook) => hook(oldSessionId, this.sessionId)));
}
return this.sessionId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsb2FkU2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9icm93c2VyL3JlbG9hZFNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBR2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUVqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWE7SUFDL0IsTUFBTSxZQUFZLEdBQUksSUFBNEIsQ0FBQyxTQUFTLENBQUE7SUFFNUQ7O09BRUc7SUFDSCxJQUFJLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUNoQjs7OztXQUlHO1FBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtJQUMvRSxNQUFNLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQTZCLENBQUE7SUFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRyxJQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsU0FBbUIsQ0FBQTtBQUNuQyxDQUFDIn0=