Skip to main content

WebdriverIO

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

Sponsored by
🌎

Test in Real Environments

WebdriverIO allows you to test in actual browser or mobile devices used by your users.

🔩

Versatile and Feature Rich

Use WebdriverIO for full e2e or unit and component testing in the browser.

💤

Auto Wait

WebdriverIO automatically waits for elements to appear before interacting with them.

📒

Based on Web Standards

Cross browser support via automation through WebDriver and WebDriver Bidi.

📱

Native Mobile Support

Run WebdriverIO on real mobile devices, smart TVs or other IoT devices through Appium.

🫂

Committed Community

Running a support channel with over 8k members and a rich ecosystem of community maintained plugins.


import { $, expect } from '@wdio/globals'
import { render } from '@testing-library/vue'
import HelloWorld from '../../src/components/HelloWorld.vue'

describe('Component Testing', () => {
it('increments value on click', async () => {
const { getByText } = render(HelloWorld)
const btn = getByText('count is 0')

// transform into WebdriverIO element
const button = await $(btn)

// interact with element like a real user
await button.click()
await button.click()

await expect(button).toMatchInlineSnapshot(
"count is 2"
)
})
})

E2E and Unit / Component Testing in real Browser!

WebdriverIO is an all in one framework for your web app development. It enables you to run small and lightweight component tests as well as running e2e test scenarios in the browser or on a mobile device. This guarantees that you to do the testing in an environment used by your users.

It comes with smart selector strategies that simplify interacting e.g. with React components or running deep selector queries with nested shadow DOM trees. As interactions happen through a standardized automation protocol it is guaranteed they behave natively and aren't just JavaScript emulated.

Easy setup for web component testing with:

Vue.jsNuxtSveltePreactSolidJSLitStencil

Get Started With WebdriverIO within Seconds

The WebdriverIO testrunner comes with a command line interface that provides a powerful configuration utility and helps you to create your test setup in less than a minute. It lets you pick from available test framework integrations and easily allows to add all supported reporter and service plugins!

With just one simple command you can set up a complete test suite:


$ npm init wdio@latest ./

Start learning more about WebdriverIO and how to get started on YouTube.

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.

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 or Google Lighthouse. With the @wdio/lighthouse-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.emulate('device', '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)

Who is using WebdriverIO?

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

Open Source and Open Governed

We are an open source project with a strong commitment to transparency and community governance. We are part of the OpenJS Foundation which is a part of the Linux Foundation. The project is entirely run by volunteers and funded by invested companies that want to see the project succeed. The project team is grateful for the generous sponsorship of these companies.

💎 Premium Sponsors

🥇 Gold Sponsors

If you use WebdriverIO within your organization, please consider supporting the project by becoming a sponsor. It will help us to keep the project running and evolving.

We’d like to extend our heartfelt thanks to all the contributors who have helped make WebdriverIO the powerful tool it is today. Your dedication and effort are truly appreciated!

Welcome! How can I help?

WebdriverIO AI Copilot
Skip to main content

WebdriverIO

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

Sponsored byBrowserStack
🌎

Test in Real Environments

WebdriverIO allows you to test in actual browser or mobile devices used by your users.

🔩

Versatile and Feature Rich

Use WebdriverIO for full e2e or unit and component testing in the browser.

💤

Auto Wait

WebdriverIO automatically waits for elements to appear before interacting with them.

📒

Based on Web Standards

Cross browser support via automation through WebDriver and WebDriver Bidi.

📱

Native Mobile Support

Run WebdriverIO on real mobile devices, smart TVs or other IoT devices through Appium.

🫂

Committed Community

Running a support channel with over 8k members and a rich ecosystem of community maintained plugins.


import { $, expect } from '@wdio/globals'
import { render } from '@testing-library/vue'
import HelloWorld from '../../src/components/HelloWorld.vue'

describe('Component Testing', () => {
it('increments value on click', async () => {
const { getByText } = render(HelloWorld)
const btn = getByText('count is 0')

// transform into WebdriverIO element
const button = await $(btn)

// interact with element like a real user
await button.click()
await button.click()

await expect(button).toMatchInlineSnapshot(
"count is 2"
)
})
})

E2E and Unit / Component Testing in real Browser!

WebdriverIO is an all in one framework for your web app development. It enables you to run small and lightweight component tests as well as running e2e test scenarios in the browser or on a mobile device. This guarantees that you to do the testing in an environment used by your users.

It comes with smart selector strategies that simplify interacting e.g. with React components or running deep selector queries with nested shadow DOM trees. As interactions happen through a standardized automation protocol it is guaranteed they behave natively and aren't just JavaScript emulated.

Easy setup for web component testing with:

Vue.jsNuxtSveltePreactSolidJSLitStencil

Get Started With WebdriverIO within Seconds

The WebdriverIO testrunner comes with a command line interface that provides a powerful configuration utility and helps you to create your test setup in less than a minute. It lets you pick from available test framework integrations and easily allows to add all supported reporter and service plugins!

With just one simple command you can set up a complete test suite:


$ npm init wdio@latest ./

Start learning more about WebdriverIO and how to get started on YouTube.

Create WebdriverIO Project to automate MacOS apps

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.

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 or Google Lighthouse. With the @wdio/lighthouse-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.emulate('device', '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)

Who is using WebdriverIO?

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

Open Source and Open Governed

We are an open source project with a strong commitment to transparency and community governance. We are part of the OpenJS Foundation which is a part of the Linux Foundation. The project is entirely run by volunteers and funded by invested companies that want to see the project succeed. The project team is grateful for the generous sponsorship of these companies.

💎 Premium Sponsors

BrowserStack

🥇 Gold Sponsors

Route4MeLambdatest

If you use WebdriverIO within your organization, please consider supporting the project by becoming a sponsor. It will help us to keep the project running and evolving.

We’d like to extend our heartfelt thanks to all the contributors who have helped make WebdriverIO the powerful tool it is today. Your dedication and effort are truly appreciated!

christian-bromann's avatar
mgrybyk's avatar
erwinheitzman's avatar
wswebcreation's avatar
WillBrock's avatar
greenkeeper[bot]'s avatar
klamping's avatar
SCG82's avatar
BorisOsipov's avatar
tamil777selvan's avatar
fijijavis's avatar
abjerstedt's avatar
praveendvd's avatar
andriilazebnyi's avatar
harsha509's avatar
ccharnkij's avatar
jan-molak's avatar
nextlevelbeard's avatar
lacell75's avatar
jlipps's avatar
sriteja777's avatar
baruchvlz's avatar
ablok's avatar
CrispusDH's avatar
alcpereira's avatar
sauravdas1997's avatar
Ankit098's avatar
udarrr's avatar
Delta456's avatar
jochen-testingbot's avatar
pako88's avatar
Marketionist's avatar
unickq's avatar
aha-oretama's avatar
StephenABoyd's avatar
07souravkunda's avatar
RossVertizan's avatar
Rondleysg's avatar
pjcalvo's avatar
lukyth's avatar
osmolyar's avatar
mato533's avatar
suniljaiswal01's avatar
amarnathk1547's avatar
SrinivasanTarget's avatar
gavvvr's avatar
seanpoulter's avatar
martomo's avatar
hieuxlu's avatar
Badisi's avatar
epszaw's avatar
jayrepo's avatar
tech-dm-klymenko's avatar
jrobinson01's avatar
HananArgov's avatar
sebastian-sauer's avatar
naddison's avatar
amiya-pattnaik's avatar
AutomationReddy's avatar
vgrigoruk's avatar
Zearin's avatar
tzurp's avatar
esaari's avatar
alfonso-presa's avatar
amaanbs's avatar
L0tso's avatar
dprevost-LMI's avatar
Fabianopb's avatar
jemishgopani's avatar
kamal-kaur04's avatar
nagpalkaran95's avatar
rendmath's avatar
PippoRaimondi's avatar
KuznetsovRoman's avatar
tadashi0713's avatar
martinfrancois's avatar
joshskumar's avatar
jayandran-Sampath's avatar
iamkenos's avatar
valfirst's avatar
delabiejochen's avatar
sangcnguyen's avatar
abdatta's avatar
DudaGod's avatar
johnp's avatar
kyrylodolynskyi's avatar
larryg01's avatar
Nyaran's avatar
M-Hammad-Faisal's avatar
rwaskiewicz's avatar
nicholasbailey's avatar
navin772's avatar
samuelfreiberg's avatar
Bamieh's avatar
Joozty's avatar
KazuCocoa's avatar
Kignuf's avatar

Welcome! How can I help?

WebdriverIO AI Copilot