Platform Support
Complete guide to platform-specific requirements, limitations, and driver setup for Dioxus testing.
Platform Support Overview
| Platform | Supported | Driver Providers | Notes |
|---|---|---|---|
| Windows | ✅ Yes | 'embedded', 'external' | 'embedded' recommended; 'external' requires wdio-dioxus-driver + msedgedriver |
| Linux | ✅ Yes | 'embedded' only | 'external' blocked in v1 — upstream Dioxus PR pending |
| macOS | ✅ Yes | 'embedded' only | 'external' not supported |
Driver Providers
'embedded' (Recommended Everywhere)
The embedded WebDriver provider uses wdio-dioxus-embedded-driver wired into the app via wdio_dioxus_bridge::install(config). No external driver process is needed.
Works on: Windows, Linux, macOS
Requirements:
wdio-dioxus-bridge = "1"inCargo.tomlwdio_dioxus_bridge::install(config)inmain.rsinside#[cfg(debug_assertions)]- Debug build of the app (
cargo build)
Configuration:
services: [['@wdio/dioxus-service', {
driverProvider: 'embedded', // Default, recommended
}]]
'external' (Windows Only in v1)
The external provider uses wdio-dioxus-driver (a fork of tauri-driver) + msedgedriver.exe.
Works on: Windows only in v1
Not supported on: Linux (blocked — see below), macOS (never supported)
Requirements:
wdio-dioxus-driverinstalled viacargo install wdio-dioxus-drivermsedgedriver.exe(auto-managed by the service withautoDownloadEdgeDriver: true)
Configuration:
services: [['@wdio/dioxus-service', {
driverProvider: 'external',
autoInstallDioxusDriver: true,
autoDownloadEdgeDriver: true,
}]]
Windows
'embedded' Provider (Recommended)
No external driver needed. Ensure the bridge is in your app and use a debug build.
services: [['@wdio/dioxus-service', {
driverProvider: 'embedded',
appBinaryPath: './target/debug/my_app.exe',
}]]
'external' Provider
Uses wdio-dioxus-driver → msedgedriver.exe → Dioxus app via WebView2 automation.
Setup:
- Build a debug binary:
cargo build - Configure the service:
services: [['@wdio/dioxus-service', {
driverProvider: 'external',
autoInstallDioxusDriver: true,
autoDownloadEdgeDriver: true,
appBinaryPath: './target/debug/my_app.exe',
}]]
The service auto-manages msedgedriver.exe to match the WebView2 version in your binary.
See Edge WebDriver (Windows) for detailed setup.
Windows-Specific Features
- ✅ Full Dioxus invoke API via
browser.dioxus.execute() - ✅ Command mocking
- ✅ Log capture (frontend and backend)
- ✅ Screenshot capture
- ✅ Multiremote testing
Windows Requirements
- Visual C++ Build Tools or Visual Studio
- Rust toolchain
- Node.js 18+
- For
'external'provider: wdio-dioxus-driver + msedgedriver (auto-managed)
Linux
'embedded' Provider Only
'external' is blocked in v1 due to a missing upstream Dioxus API — the automation toggle that wdio-dioxus-driver needs to pass to Wry has not yet landed in the Dioxus/Wry codebase. This is tracked and will be enabled in v1.1 once the upstream PR merges.
Attempting to set driverProvider: 'external' on Linux throws a SevereServiceError at startup with an explanatory message.
Configuration:
services: [['@wdio/dioxus-service', {
driverProvider: 'embedded', // The only supported option on Linux
appBinaryPath: './target/debug/my_app',
}]]
Linux Build Requirements
Install WebKitGTK libraries (required to build Dioxus desktop apps):
# Debian/Ubuntu
sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
# Fedora
sudo dnf install -y webkit2gtk4.1-devel gtk3-devel
# Arch Linux
sudo pacman -S webkit2gtk-4.1 gtk3
Headless Testing on Linux
To run tests without a display (CI/CD environments):
# With Xvfb
sudo apt-get install -y xvfb
xvfb-run -a npx wdio run wdio.conf.ts
Linux-Specific Features
- ✅ Full Dioxus invoke API
- ✅ Command mocking
- ✅ Log capture
- ✅ Screenshot capture
- ✅ Headless testing with Xvfb
- ✅ Multiremote testing
- ❌
'external'provider (v1 — v1.1 target)