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!!