Skip to main content

WebdriverIO

Next-gen browser and mobile automation test framework for Node.js

Extendable

Adding helper functions, or more complicated sets and combinations of existing commands is simple and really useful.

Compatible

WebdriverIO can be run on the WebDriver Protocol for true cross-browser testing as well as Chrome DevTools Protocol for Chromium based automation using Puppeteer.

Feature Rich

The huge variety of community plugins allows you to easily integrate and extend your setup to fulfill your requirements.

Who is using WebdriverIO?

  • Google
  • Netflix
  • Microsoft
  • Mozilla
  • Buoyant
  • SAP
  • Hilton
  • Charles Schwab
  • JW Player
  • BBVA
  • GoPro
  • Algolia
  • Financial Times
  • Zendesk
  • 1&1
  • Avira
  • Deloitte
  • Rabobank
  • Bedrock Streaming

await browser.url('https://ahfarmer.github.io/calculator/');
const appWrapper = await browser.$('div#root')

await browser.react$('t', {
props: { name: '7' }
}).click()
await browser.react$('t', {
props: { name: 'x' }
}).click()
await browser.react$('t', {
props: { name: '6' }
}).click()
await browser.react$('t', {
props: { name: '=' }
}).click()

// prints "42"
console.log(await $('.component-display').getText());

Support for Modern Web and Mobile Frameworks

WebdriverIO allows you to automate any application written with modern web frameworks such as React, Angular, Polymeror Vue.js as well as native mobile applications for Android and iOS.

It comes with smart selector strategies that can, e.g. using the react$ command, fetch React components by its component name and filter it by its props or states. A similar command called $shadow provides the ability to fetch elements within the shadow DOM of a web component.

Native Support for:

Vue.jsAngularPolymerSvelte

Google Lighthouse Integration

WebdriverIO not only runs automation based on the WebDriver protocol, it also leverages native browser APIs to enable integrations to popular developer tools such as Chrome DevTools orGoogle Lighthouse. With the @wdio/devtools-service plugin you have access to commands for validating if you app is a valid PWA application as well as to commands for capturing frontend performance metrics such as speedIndex and others.

Integration to developer tools such as:

Chrome DevToolsGoogle LighthouseAxe Accessibility Engine

await browser.emulateDevice('iPhone X')
await browser.enablePerformanceAudits({
networkThrottling: 'Good 3G',
cacheEnabled: true,
formFactor: 'mobile'
})

// open application under test
await browser.url('https://localhost:3000')

expect(await browser.getMetrics().firstMeaningfulPaint)
.toBeBelow(2500)

const pwaCheckResult = await browser.checkPWA()
expect(pwaCheckResult.passed).toBe(true)

Watch Talks about WebdriverIO

The community around WebdriverIO is actively speaking on various user groups or conferences about specific topics around automated testing with WebdriverIO. Check out this talk on My favourite features of WebdriverIO by Julia Pottinger at Open Quality Conference.

There is also many YouTube Channels with useful tutorials by community members such as Klamping, Seventeenth Sep or Automation Bro.

Get Started With WebdriverIO within Minutes

The WebdriverIO testrunner comes with a command line interface that provides a nice configuration utility that helps you to create your config file in less than a minute. It also gives an overview of all available 3rd party packages like framework adaptions, reporter and services and installs them for you!


$ npm install --save-dev @wdio/cli
$ npx wdio config --yes
$ npx wdio run