No chromedriver
Your tests talk to the browser in-process via Playwright. No driver subprocess to spawn, no HTTP roundtrip per command.
Same WDIO API
Drop-in replacement for the standard `webdriver` package. Existing test code, hooks, and reporters work unchanged.
Built-in trace + video
Capability-driven auto-trace, per-test trace zips, video recording, embedded `<video controls>` in the report. No extra plugins.
Cross-browser
Chromium, Firefox, WebKit — all three engines via Playwright. One config per browser, no separate driver downloads.
CI sharding
wdioPW shard splits your spec list deterministically across N CI machines. No external glob expansion needed.
Lightweight reports
wdio-mochawesome-reporter v8 ships an inline HTML renderer (~25 KB self-contained) — no React bundle, no marge.
30-second setup
// wdio.conf.ts
import PWService from 'wdio-pw-driver'
export const config = {
runner: 'local',
automationProtocol: 'wdio-pw-driver',
services: [[PWService, {}]],
capabilities: [{
browserName: 'chromium',
'wdio:pwOptions': { headless: true },
}],
framework: 'mocha',
specs: ['./specs/**/*.spec.ts'],
}