@wdio/tauri-service
WebdriverIO service for testing Tauri applications on Windows, Linux, and macOS.
Enables cross-platform E2E testing of Tauri apps via the extensive WebdriverIO ecosystem.
Features
- Automatic tauri-driver installation and management
- Automatic Edge WebDriver management on Windows
- Automatic Tauri binary path detection
- Cross-platform support (Windows, Linux, macOS)
- Full Tauri API access via
browser.tauri.execute() - Mocking support for Tauri's invoke API
- Backend and frontend log capture
- Multiremote testing support
- Per-worker driver spawning for parallel testing
- Browser mode — test the Tauri frontend in plain Chrome against a Vite dev server, no Tauri binary or driver required
Installation
Install the service via npm:
npm install --save-dev @wdio/tauri-serviceOr with pnpm:
pnpm add -D @wdio/tauri-serviceQuick Start
Get started in minutes with the Quick Start Guide.
Minimal Configuration
Add to your wdio.conf.ts:
export const config = {
services: ['@wdio/tauri-service'],
capabilities: [
{
browserName: 'tauri',
'tauri:options': {
application: './src-tauri/target/release/my-app.exe'
}
}
]
};See Configuration Reference for all options.
Documentation
Getting Started
- Quick Start Guide - Set up in minutes
- Plugin Setup - Install tauri-plugin-wdio
Reference
- Configuration - All service options
- API Reference - Complete API documentation
- Platform Support - Windows, Linux, macOS
Guides
- Browser Mode - Test the renderer in Chrome without a Tauri binary
- Usage Examples - Common testing patterns
- Log Forwarding - Capture app logs
- Edge WebDriver (Windows) - Windows-specific setup
- Deeplink Testing - Test protocol handlers
- Visual Testing - Visual regression with
@wdio/visual-service - Video Recording - Record video of test runs with
wdio-video-reporter
Help & Support
- Troubleshooting - Common issues and solutions
- Development - Contributing guide
Platform Support
| Platform | Supported | Driver Providers | Notes |
|---|---|---|---|
| Windows | Yes | embedded, external, crabnebula |
external auto-manages the Edge WebDriver |
| Linux | Yes | embedded, external, crabnebula |
external requires webkit2gtk-driver |
| macOS | Yes | embedded, crabnebula |
Native via embedded, or CrabNebula |
See Platform Support for detailed information including distribution support and troubleshooting.
Choosing a driver provider (see ADR 0001 for the naming):
embedded(default, all platforms) — WebDriver runs inside your app; no external driver neededexternal— a separatetauri-driverprocess; Windows/Linux onlycrabnebula— CrabNebula's cross-platform driver; requires a subscription (CN_API_KEY for macOS)
driverProvider: 'official'is a deprecated alias for'external'and will be removed in v2.
Example Projects
Check out the E2E test fixtures in the desktop-mobile repository for complete working examples.
Support
Having trouble? Here are some resources:
- Troubleshooting Guide - Solutions for common issues
- Platform Support - Platform-specific information
- GitHub Issues - Bug reports and feature requests for tauri-service
- WebdriverIO Forum - General community help and discussions
Contributing
We welcome contributions! Please see our Development Guide for:
- Setting up your development environment
- Running tests
- Code style guidelines
- Pull request process
Quick start for contributors:
# Clone and install
git clone https://github.com/webdriverio/desktop-mobile.git
cd desktop-mobile
pnpm install
# Make your changes
# ...
# Run tests
pnpm test
# Submit a pull requestLicense
MIT License. See LICENSE file for details.
See Also
- WebdriverIO Documentation
- Tauri Documentation
- @wdio/electron-service - Similar service for Electron apps