Guide for developing and contributing to @wdio/tauri-service.
See the Monorepo Setup Guide for Node.js, pnpm, and Git setup.
Tauri-specific requirement — Rust Toolchain:
rustc --version
cargo --versionInstall via rustup if not present.
Follow the Monorepo Setup Guide to clone the repo and install dependencies, then build the Tauri service:
pnpm --filter @wdio/tauri-service buildpnpm --filter @wdio/tauri-service dev# Run all tests
pnpm --filter @wdio/tauri-service test
# Watch mode
pnpm --filter @wdio/tauri-service test:watch
# With coverage
pnpm --filter @wdio/tauri-service test:coverageAim for 80%+ coverage. Mock external dependencies where needed.
See the Monorepo Setup Guide for formatting and linting commands.
Located in src/edgeDriverManager.ts:
- Detects the WebView2 version from the Tauri binary
- Auto-downloads a matching MSEdgeDriver from the Microsoft CDN
- Handles version mismatches
tauri-plugin-wdio provides:
- Script execution via
window.eval() - Command mocking via invoke interception
- Log forwarding via event listeners
| Platform | Driver | Status |
|---|---|---|
| Windows | MSEdgeDriver (auto-managed) | Supported |
| Linux | WebKitWebDriver (manual install) | Supported |
| macOS | — | Not supported (WKWebView limitation) |
- Add to
TauriServiceOptionsinsrc/types.ts - Add a default value in the service class
- Add validation if needed
- Write tests
- Implement in
src/ - Export from
src/index.ts - Add TypeScript types
- Write tests
- Identify affected platforms (
windows,linux,darwin) - Add platform detection if needed
- Implement the fix
- Test on affected platforms or add platform-specific unit tests
DEBUG=wdio-tauri-service:* npx wdio run wdio.conf.ts# Run tests with Node inspector
node --inspect-brk node_modules/vitest/vitest.mjs run
# Then open chrome://inspect in ChromeAdd to .vscode/launch.json:
{
"type": "node",
"request": "launch",
"name": "Vitest Debug",
"program": "${workspaceFolder}/node_modules/vitest/vitest.mjs",
"args": ["run"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}Dependencies are managed via the monorepo's catalog system. See Dependency Management for details.
Releases are managed by maintainers via GitHub Actions. See CONTRIBUTING.md for the release process.
See CONTRIBUTING.md for contribution guidelines, commit message format, and PR process.
- Questions: GitHub Discussions
- Bugs: GitHub Issues
- Help Wanted: help:wanted issues
- Beginner Friendly: help:beginner-friendly issues