Configuration

If you create a WebdriverIO instance, you need to define some options in order to set the proper capabilities and settings. When calling the remote method like:

1
2
var webdriverio = require('webdriverio');
var client = webdriverio.remote(options);

you need to pass in an options object to define your Webdriver instance. Note that this is only necessary if you run WebdriverIO as a standalone package. If you are using the wdio test runner, these options belong in your wdio.conf.js configuration file. These are the options you can define:

desiredCapabilities

Defines the capabilities you want to run in your Selenium session. See the Selenium documentation for a list of the available capabilities. Also useful is Sauce Labs Automated Test Configurator that helps you to create this object by clicking together your desired capabilities.

Refer to the cloud service docs for further service specific options.

Type: Object
Default: { browserName: 'firefox' }

Example:

1
2
3
4
5
6
browserName: 'chrome', // options: `firefox`, `chrome`, `opera`, `safari`
version: '27.0', // browser version
platform: 'XP', // OS platform
tags: ['tag1','tag2'], // specify some tags (e.g. if you use Sauce Labs)
name: 'my test' // set name for test (e.g. if you use Sauce Labs)
pageLoadStrategy: 'eager' // strategy for page load

Details:

pageLoadStrategy is implemented in Selenium 2.46.0, and apparently, it is only working on Firefox. The valid values are:

normal - waits for document.readyState to be ‘complete’. This value is used by default. eager - will abort the wait when document.readyState is ‘interactive’ instead of waiting for ‘complete’. none - will abort the wait immediately, without waiting for any of the page to load.

logLevel

Level of logging verbosity.

Type: String
Default: silent
Options: verbose | silent | command | data | result

logOutput

Pipe WebdriverIO logs into a file. You can either define a directory, and WebdriverIO generates a filename for the log file or you can pass in a writeable stream, and everything gets redirected to that (last one doesn’t work yet with the wdio runner).

Type: String|writeable stream
Default: null

host

Host of your WebDriver server.

Type: String
Default: 127.0.0.1

port

Port your WebDriver server is on.

Type: Number
Default: 4444

path

Path to WebDriver server.

Type: String
Default: /wd/hub

baseUrl

Shorten url command calls by setting a base url. If your url parameter starts with /, the base url gets prepended.

Type: String
Default: null

coloredLogs

Enables colors for log output

Type: Boolean
Default: true

screenshotPath

Saves a screenshot to a given path if the Selenium driver crashes

Type: String|null
Default: null

waitforTimeout

Default timeout for all waitForXXX commands.

Type: Number
Default: 500

waitforInterval

Default interval for all waitForXXX commands.

Type: Number
Default: 250

debug

Enables node debugging

Type: Boolean
Default: false

execArgv

Node arguments to specify when launching child processes

Type: Array of String
Default: null

Setup Babel to write tests using next generation JavaScript

There are multiple ways to setup Babel using the wdio testrunner. If you are running Cucumber or Jasmine tests, you just need to register Babel in the before hook of your config file

1
2
3
4
5
6
7
before(function() {
require('babel/register')({
blacklist: [
'regenerator'
]
});
}),

Make sure to allow generator calls to directly go through since Node >v0.10 has sufficient generator support.

If you run Mocha tests, you can use Mocha’s internal compiler to register Babel, e.g.:

1
2
3
4
5
mochaOpts: {
ui: 'bdd',
compilers: ['js:babel-core/register'],
require: ['./test/helpers/common.js']
},

For generator support, add a file called .babelrc to your project root directory with the following content:

1
2
3
{
"blacklist": ["regenerator"]
}

Setup TypeScript

Similar to Babel setup, you can register TypeScript to compile your .ts files in your before hook of your config file. You will need ts-node as an installed devDependency.

1
2
3
before(function() {
require('ts-node/register');
}),

Similarly for mocha:

1
2
3
4
5
mochaOpts: {
ui: 'bdd',
compilers: ['ts:ts-node/register'],
require: ['./test/helpers/common.js']
},