Best JavaScript code snippet using webdriverio-monorepo
utils.js
Source:utils.js  
...42        }43    });44}45exports.runServiceHook = runServiceHook;46async function runLauncherHook(hook, ...args) {47    const catchFn = (e) => log.error(`Error in hook: ${e.stack}`);48    if (typeof hook === 'function') {49        hook = [hook];50    }51    return Promise.all(hook.map((hook) => {52        try {53            return hook(...args);54        }55        catch (e) {56            return catchFn(e);57        }58    })).catch(catchFn);59}60exports.runLauncherHook = runLauncherHook;...launcher.js
Source:launcher.js  
...55            this._launcher = launcherServices;56            this._args.ignoredWorkerServices = ignoredWorkerServices;57            await this.runner.initialise();58            log.info('Run onPrepare hook');59            await utils_2.runLauncherHook(config.onPrepare, config, caps);60            await utils_2.runServiceHook(this._launcher, 'onPrepare', config, caps);61            exitCode = await this.runMode(config, caps);62            log.info('Run onComplete hook');63            await utils_2.runServiceHook(this._launcher, 'onComplete', exitCode, config, caps);64            const onCompleteResults = await utils_2.runOnCompleteHook(config.onComplete, config, caps, exitCode, this.interface.result);65            exitCode = onCompleteResults.includes(1) ? 1 : exitCode;66            await logger_1.default.waitForBuffer();67            this.interface.finalise();68        }69        catch (err) {70            error = err;71        }72        finally {73            if (!this._hasTriggeredExitRoutine) {74                this._hasTriggeredExitRoutine = true;75                await this.runner.shutdown();76            }77        }78        if (error) {79            throw error;80        }81        return exitCode;82    }83    runMode(config, caps) {84        if (!caps || (!this.isMultiremote && !caps.length)) {85            return new Promise((resolve) => {86                log.error('Missing capabilities, exiting with failure');87                return resolve(1);88            });89        }90        const specFileRetries = this._isWatchMode ? 0 : config.specFileRetries;91        let cid = 0;92        if (this.isMultiremote) {93            this._schedule.push({94                cid: cid++,95                caps,96                specs: this.configParser.getSpecs(caps.specs, caps.exclude).map(s => ({ files: [s], retries: specFileRetries })),97                availableInstances: config.maxInstances || 1,98                runningInstances: 099            });100        }101        else {102            for (let capabilities of caps) {103                this._schedule.push({104                    cid: cid++,105                    caps: capabilities,106                    specs: this.configParser.getSpecs(capabilities.specs, capabilities.exclude).map(s => ({ files: [s], retries: specFileRetries })),107                    availableInstances: capabilities.maxInstances || config.maxInstancesPerCapability,108                    runningInstances: 0109                });110            }111        }112        return new Promise((resolve) => {113            this._resolve = resolve;114            if (Object.values(this._schedule).reduce((specCnt, schedule) => specCnt + schedule.specs.length, 0) === 0) {115                log.error('No specs found to run, exiting with failure');116                return resolve(1);117            }118            if (this.runSpecs()) {119                resolve(0);120            }121        });122    }123    runSpecs() {124        let config = this.configParser.getConfig();125        if (this._hasTriggeredExitRoutine) {126            return true;127        }128        while (this.getNumberOfRunningInstances() < config.maxInstances) {129            let schedulableCaps = this._schedule130                .filter(() => {131                const filter = typeof config.bail !== 'number' || config.bail < 1 ||132                    config.bail > this._runnerFailed;133                if (!filter) {134                    this._schedule.forEach((t) => { t.specs = []; });135                }136                return filter;137            })138                .filter(() => this.getNumberOfRunningInstances() < config.maxInstances)139                .filter((a) => a.availableInstances > 0)140                .filter((a) => a.specs.length > 0)141                .sort((a, b) => a.runningInstances - b.runningInstances);142            if (schedulableCaps.length === 0) {143                break;144            }145            let specs = schedulableCaps[0].specs.shift();146            this.startInstance(specs.files, schedulableCaps[0].caps, schedulableCaps[0].cid, specs.rid, specs.retries);147            schedulableCaps[0].availableInstances--;148            schedulableCaps[0].runningInstances++;149        }150        return this.getNumberOfRunningInstances() === 0 && this.getNumberOfSpecsLeft() === 0;151    }152    getNumberOfRunningInstances() {153        return this._schedule.map((a) => a.runningInstances).reduce((a, b) => a + b);154    }155    getNumberOfSpecsLeft() {156        return this._schedule.map((a) => a.specs.length).reduce((a, b) => a + b);157    }158    async startInstance(specs, caps, cid, rid, retries) {159        let config = this.configParser.getConfig();160        if (typeof config.specFileRetriesDelay === 'number' && config.specFileRetries > 0 && config.specFileRetries !== retries) {161            await utils_1.sleep(config.specFileRetriesDelay * 1000);162        }163        const runnerId = rid || this.getRunnerId(cid);164        let processNumber = this._runnerStarted + 1;165        let debugArgs = [];166        let debugType;167        let debugHost = '';168        let debugPort = process.debugPort;169        for (let i in process.execArgv) {170            const debugArgs = process.execArgv[i].match('--(debug|inspect)(?:-brk)?(?:=(.*):)?');171            if (debugArgs) {172                let [, type, host] = debugArgs;173                if (type) {174                    debugType = type;175                }176                if (host) {177                    debugHost = `${host}:`;178                }179            }180        }181        if (debugType) {182            debugArgs.push(`--${debugType}=${debugHost}${(debugPort + processNumber)}`);183        }184        let capExecArgs = [...(config.execArgv || [])];185        let defaultArgs = (capExecArgs.length) ? process.execArgv : [];186        let execArgv = [...defaultArgs, ...debugArgs, ...capExecArgs];187        this._runnerStarted++;188        log.info('Run onWorkerStart hook');189        await utils_2.runLauncherHook(config.onWorkerStart, runnerId, caps, specs, this._args, execArgv);190        await utils_2.runServiceHook(this._launcher, 'onWorkerStart', runnerId, caps, specs, this._args, execArgv);191        const worker = this.runner.run({192            cid: runnerId,193            command: 'run',194            configFile: this._configFilePath,195            args: this._args,196            caps,197            specs,198            execArgv,199            retries200        });201        worker.on('message', this.interface.onMessage.bind(this.interface));202        worker.on('error', this.interface.onMessage.bind(this.interface));203        worker.on('exit', this.endHandler.bind(this));...Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3    desiredCapabilities: {4    }5};6    .remote(options)7    .init()8    .runLauncherHook('end', function(err, res) {9        console.log('end hook');10    })11    .end();12var webdriverio = require('webdriverio');13var options = {14    desiredCapabilities: {15    }16};17    .remote(options)18    .init()19    .setValue('input[type="file"]', 'C:/Users/Downloads/abc.txt')20    .end();21var webdriverio = require('webdriverio');22var options = {23    desiredCapabilities: {24    }25};26    .remote(options)27    .init()28    .setValue('input[type="file"]', 'C:/Users/Downloads/abc.txt')29    .end();Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3    desiredCapabilities: {4    }5};6    .remote(options)7    .init()8    .getTitle().then(function(title) {9        console.log('Title was: ' + title);10    })11    .end();12var WebdriverIO = require('webdriverio');13var options = {14    desiredCapabilities: {15    }16};17var client = WebdriverIO.remote(options);18client.init();19client.getTitle().then(function(title) {20    console.log('Title was: ' + title);21});22client.end();23var WebdriverIO = require('webdriverio');24var options = {25    desiredCapabilities: {26    }27};28    .remote(options)29    .init()30    .getTitle().then(function(title) {31        console.log('Title was: ' + title);32    })33    .end();34var WebdriverIO = require('webdriverio');35var options = {36    desiredCapabilities: {37    }38};39    .remote(options)40    .init()41    .getTitle().then(function(title) {42        console.log('Title was: ' + title);43    })44    .end();Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3    desiredCapabilities: {4    }5};6var client = webdriverio.remote(options);7client.init()8    .getTitle().then(function(title) {9        console.log('Title was: ' + title);10    })11    .end();12exports.config = {13    capabilities: [{14    }],15    before: function (capabilities, specs) {16        console.log("before hook");17    },18    beforeSuite: function (suite) {19        console.log("beforeSuite hook");20    },21    beforeTest: function (test) {22        console.log("beforeTest hook");23    },24    beforeCommand: function (commandName, args) {25        console.log("beforeCommand hook");26    },27    afterCommand: function (commandName, args, result, error) {28        console.log("afterCommand hook");29    },30    afterTest: function (test) {31        console.log("afterTest hook");32    },33    afterSuite: function (suite) {34        console.log("afterSuite hook");35    },36    after: function (result, capabilities, specs) {37        console.log("after hook");38    },39    onComplete: function(exitCode) {40        console.log("onComplete hook");41    }42};Using AI Code Generation
1browser.runLauncherHook('beforeSession', config, caps)2browser.runLauncherHook('afterSession', config, caps)3browser.runLauncherHook('onPrepare', config, caps)4browser.runLauncherHook('before', config, caps)5browser.runLauncherHook('beforeSuite', config, caps)6browser.runLauncherHook('beforeHook', config, caps)7browser.runLauncherHook('beforeTest', config, caps)8browser.runLauncherHook('beforeCommand', config, caps)9browser.runLauncherHook('afterCommand', config, caps)10browser.runLauncherHook('afterTest', config, caps)11browser.runLauncherHook('afterHook', config, caps)12browser.runLauncherHook('afterSuite', config, caps)13browser.runLauncherHook('after', config, caps)14browser.runLauncherHook('onComplete', config, caps)15browser.runLauncherHook('onReload', config, caps)16browser.runLauncherHook('beforeFeature', config, caps)17browser.runLauncherHook('beforeScenario', config, caps)18browser.runLauncherHook('beforeStep', config, caps)19browser.runLauncherHook('afterStep', config, caps)20browser.runLauncherHook('afterScenario', config, caps)Using AI Code Generation
1const WebdriverIO = require('webdriverio');2const wdio = new WebdriverIO();3wdio.runLauncherHook('onPrepare', wdio.config, wdio.capabilities);4const WebdriverIO = require('webdriverio');5const wdio = new WebdriverIO();6wdio.runHook('beforeSession', wdio.config, wdio.capabilities);7const WebdriverIO = require('webdriverio');8const wdio = new WebdriverIO();9wdio.runTestHook('before', wdio.config, wdio.capabilities, wdio.specs);10const WebdriverIO = require('webdriverio');11const wdio = new WebdriverIO();12wdio.runServiceHook('onPrepare', wdio.config, wdio.capabilities);13const WebdriverIO = require('webdriverio');14const wdio = new WebdriverIO();15wdio.runCommandHook('beforeCommand', wdio.config, wdio.capabilities, wdio.specs);16const WebdriverIO = require('webdriverio');17const wdio = new WebdriverIO();18wdio.runProtocolActionHook('beforeCommand', wdio.config, wdio.capabilities, wdio.specs);19const WebdriverIO = require('webdriverio');20const wdio = new WebdriverIO();21wdio.runInFiberContext(function() {22});23const WebdriverIO = require('webdriverio');24const wdio = new WebdriverIO();25wdio.runSync(function() {26});27const WebdriverIO = require('webdriverio');28const wdio = new WebdriverIO();29wdio.runAsync(function() {Using AI Code Generation
1describe('My WebdriverIO Test', () => {2    it('should do something', async () => {3        await browser.pause(3000);4    });5});6describe('My WebdriverIO Test', () => {7    before(async () => {8    });9    it('should do something', async () => {10        await browser.pause(3000);11    });12});13describe('My WebdriverIO Test', () => {14    before(async () => {15    });16    it('should do something', async () => {17        await browser.pause(3000);18    });19    after(async () => {20    });21});22describe('My WebdriverIO Test', () => {23    before(async () => {24    });25    it('should do something', async () => {26        await browser.pause(3000);27    });28    after(async () => {29    });30    afterEach(async () => {31    });32});33describe('My WebdriverIO Test', () => {34    before(async () => {35    });36    it('should do something', async () => {37        await browser.pause(3000);38    });39    after(async () => {40    });41    afterEach(async () => {42    });43    beforeEach(async () => {44    });45});46describe('My WebdriverIO Test', () => {47    before(async () => {48    });49    it('should do something', async () => {50        await browser.pause(3000);51    });52    after(async () => {53    });54    afterEach(async () => {Using AI Code Generation
1import wdio from 'webdriverio';2import { runLauncherHook } from 'webdriverio/build/launcher';3const client = wdio.remote({4    capabilities: {5    }6});7runLauncherHook('onPrepare', client.config, [client]);Using AI Code Generation
1var webdriverio = require('webdriverio');2webdriverio.remote(options).init().then(function(client) {3    client.runLauncherHook('endSession', 0, 0, function() {4        console.log('endSession hook executed');5    });6});7exports.config = {8    onPrepare: function() {9        console.log('onPrepare hook executed');10    },11    onComplete: function() {12        console.log('onComplete hook executed');13    },14    after: function() {15        console.log('after hook executed');16    },17    afterSession: function() {18        console.log('afterSession hook executed');19    },20    afterTest: function() {21        console.log('afterTest hook executed');22    },23    before: function() {24        console.log('before hook executed');25    },26    beforeSession: function() {27        console.log('beforeSession hook executed');28    },29    beforeTest: function() {30        console.log('beforeTest hook executed');31    }32}Using AI Code Generation
1const wdio = require('webdriverio');2const opts = require('./wdio.conf').config;3const browser = wdio.remote(opts);4browser.init().then(() => {5  browser.runLauncherHook('onPrepare', () => {6  });7});8const wdio = require('webdriverio');9const opts = require('./wdio.conf').config;10const browser = wdio.remote(opts);11browser.init().then(() => {12  browser.runLauncherHook('onPrepare', () => {13  });14});15const wdio = require('webdriverio');16const opts = require('./wdio.conf').config;17const browser = wdio.remote(opts);18browser.init().then(() => {19  browser.runLauncherHook('onPrepare', () => {20  });21});22const wdio = require('webdriverio');23const opts = require('./wdio.conf').config;24const browser = wdio.remote(opts);25browser.init().then(() => {26  browser.runLauncherHook('onPrepare', () => {27  });28});Wondering what could be a next-gen browser and mobile test automation framework that is also simple and concise? Yes, that’s right, it's WebdriverIO. Since the setup is very easy to follow compared to Selenium testing configuration, you can configure the features manually thereby being the center of attraction for automation testing. Therefore the testers adopt WedriverIO to fulfill their needs of browser testing.
Learn to run automation testing with WebdriverIO tutorial. Go from a beginner to a professional automation test expert with LambdaTest WebdriverIO tutorial.
Running Your First Automation Script - Learn the steps involved to execute your first Test Automation Script using WebdriverIO since the setup is very easy to follow and the features can be configured manually.
Selenium Automation With WebdriverIO - Read more about automation testing with WebdriverIO and how it supports both browsers and mobile devices.
Browser Commands For Selenium Testing - Understand more about the barriers faced while working on your Selenium Automation Scripts in WebdriverIO, the ‘browser’ object and how to use them?
Handling Alerts & Overlay In Selenium - Learn different types of alerts faced during automation, how to handle these alerts and pops and also overlay modal in WebdriverIO.
How To Use Selenium Locators? - Understand how Webdriver uses selenium locators in a most unique way since having to choose web elements very carefully for script execution is very important to get stable test results.
Deep Selectors In Selenium WebdriverIO - The most popular automation testing framework that is extensively adopted by all the testers at a global level is WebdriverIO. Learn how you can use Deep Selectors in Selenium WebdriverIO.
Handling Dropdown In Selenium - Learn more about handling dropdowns and how it's important while performing automated browser testing.
Automated Monkey Testing with Selenium & WebdriverIO - Understand how you can leverage the amazing quality of WebdriverIO along with selenium framework to automate monkey testing of your website or web applications.
JavaScript Testing with Selenium and WebdriverIO - Speed up your Javascript testing with Selenium and WebdriverIO.
Cross Browser Testing With WebdriverIO - Learn more with this step-by-step tutorial about WebdriverIO framework and how cross-browser testing is done with WebdriverIO.
Get 100 minutes of automation test minutes FREE!!
