node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

gulp-wdio

Build Status

gulp-wdio

Same as gulp-webdriver with three key differences:

  • built-in browserstack support
  • built-in selenium support
  • included webdriver.io package (so you wouldn't have to)

So you could just simple do –

const wdio = require('gulp-wdio');
 
gulp.task('e2e', () => {
  return gulp.src('path/to/wdio.conf.js').pipe(wdio({
 
    // Omit "type" property if you want start wdio without additional layers 
    type: 'selenium',  // or "browserstack" 
    wdio: {} // Same arguments as with `wdio --help` 
  }));
});

Instead of something like this (taken from gulp-webdriver test script) –

// For local selenium 
import gulp from 'gulp'
import selenium from 'selenium-standalone'
import webdriver from '../lib/index'
 
export default options => {
    let errorLog = options.errorHandler('Selenium start')
 
    gulp.task('selenium:start', done => {
        selenium.install({
            logger (message) {
                process.stdout.write(`${message} \n`)
            },
            progressCb: (totalLength, progressLength) => {
                process.stdout.write(`Downloading drivers ${Math.round(progressLength / totalLength * 100)}\r`)
            }
        }, err => {
            if (err) return done(err)
 
            selenium.start({
                spawnOptions: {
                    stdio: 'ignore'
                }
            }, (err, child) => {
                selenium.child = child
                errorLog(err)
                done()
            })
        })
    })
 
    gulp.task('test', ['selenium:start'], () => {
        return gulp.src(`${options.test}/wdio.*`)
            .pipe(webdriver({
                logLevel: 'verbose',
                waitforTimeout: 12345,
                framework: 'mocha',
                // only for testing purposes 
                cucumberOpts: {
                    require: 'nothing'
                }
            })).once('end', () => {
                selenium.child.kill()
            })
    })
}