One framework to test every platform your users are on
Browsers, native and hybrid mobile apps, desktop apps, VS Code extensions and visual regressions, all with one API. Built on web standards, openly governed, and ready for your coding agent.
npm init wdio@latest .Write it once. Run it on every platform.
The same test runner, selectors, assertions and reporters, whether you are testing a web app, a phone, a desktop app or an editor extension.
End-to-end and component tests in real browsers
- Chrome, Firefox, Safari and Edge through WebDriver and WebDriver BiDi
- Component tests for React, Vue, Svelte, Solid, Preact, Lit and Stencil
- Network mocking, emulation and auto-waiting built in
import { browser, $, expect } from '@wdio/globals'
describe('webdriver.io', () => {
it('finds the docs search', async () => {
await browser.url('https://webdriver.io')
await $('.DocSearch-Button').click()
await expect($('.DocSearch-Modal')).toBeDisplayed()
})
})
Built for coding agents
Most tests are now written together with an agent. WebdriverIO gives it everything it needs to write, run and fix them on its own.
WebdriverIO MCP
Let agents drive browsers and mobile apps to explore your UI and find robust selectors.
Agent-ready docs
Every page as Markdown, llms.txt, per-section bundles and a docs MCP server at webdriver.io/mcp.
Traces agents can read
Failing tests leave a Markdown transcript, screenshots and accessibility snapshots behind.
Write a login test for localhost:3000 and make sure it passes.
webdriverio-docssearch_docs"selectors best practices"
wdio-mcpstart_session{ platform: "browser", browser: "chrome" }
wdio-mcpnavigate"http://localhost:3000/login"
wdio-mcpget_elements{ }
Found the form. Writing test/specs/login.e2e.ts with aria selectors.
terminalnpx wdio runwdio.conf.ts --spec test/specs/login.e2e.ts
✓ 1 passing (2.4s)
The dashboard that opens while your tests run. Commands, the page, and source update as each step executes.
See exactly what your test did
WebdriverIO DevTools shows every command, network request, console message and screenshot of a run. Watch tests live and rerun single tests with a click, or record portable traces in CI and replay them later.
Community driven. Openly governed.
WebdriverIO is not a product of a testing company. It is run by its community under the umbrella of the OpenJS Foundation, so its direction follows the needs of its users.
OpenJS Foundation
Owned by a vendor-neutral non-profit, next to Node.js, Electron and webpack.
Open governance
A public governance model: anyone can contribute, and committers and the TSC grow out of the community.
Every feature is free
No paid tier, no feature gates, no lock-in to a cloud vendor. Run anywhere.
Paid contributors
Sponsorship money flows back to contributors through the stipend program.
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!
Real browsers, real devices, real users
WebdriverIO automates through WebDriver and WebDriver BiDi, the W3C standards every browser vendor ships. No patched browser builds and no JavaScript-emulated clicks: your tests interact with your app the way your users do.
Sponsored by companies that care
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.
Start testing in under a minute
npm init wdio@latest .

















