How it works
À la carte, not a buffet.
Allwright isn't a separate tool for every surface wearing one brand — and it isn't one giant program trying to do everything either. It's a small core plus a plugin per surface: install the plugin for what you're testing, and the core knows how to drive it. Leave a plugin uninstalled, and the core simply doesn't attempt that surface yet.
One core, as many plugins as it needs
Every plugin is built from the ground up on allwright's own engine — not a wrapper around someone else's driver. Here's today's catalog; it grows as new surfaces ship.
$ allwright plugin list
$ allwright plugin install web
$ allwright plugin install mobile-android
$ allwright plugin install mobile-ios
From your test code to the core
Bring your own language
Rust, Go, Java, Python, and TypeScript clients are all published and ready to install from their usual package registries.
Rust
PublishedThe engine itself, plus a high-level client.
View example →Go
PublishedA Playwright-style Browser and Page API.
View example →Java
PublishedA Gradle-based client for JVM test suites.
View example →Python
PublishedA client that feels at home in pytest.
View example →TypeScript
PublishedCore client plus Vitest fixtures, for TypeScript or plain JavaScript.
View example →Every client above speaks the same command set — nothing is language-exclusive. See exactly what that command set covers today →
No drivers to babysit
Once you install the web plugin, allwright drives a real, current Chromium or Firefox browser directly instead of going through a separate driver binary you have to download and version-match by hand. That means fewer “works on my machine” surprises, and tests that behave the way an actual person clicking through your app would.
Android works the same way already: install the mobile-android plugin and the same client code taps, types, and reads a real app over adb — no Appium, no separate driver server. iOS automatically provisions its Simulator runtime or locally re-signs its prebuilt physical-device agent, then installs the app under test from a local path or URL. Desktop works the same way: the macOS plugin drives native apps through a bundled XCUITest runner, and the Windows plugin drives Win32, WinForms, WPF, UWP, and WinUI apps through an isolated UI Automation agent — still no Appium or WinAppDriver. Linux desktop and API testing will follow the same model once their plugins ship — no new tool to learn, just one more plugin install for whichever surface you need next.
Try it in your own project
Web, Android, and iOS are ready today. Scaffold a project with one command and run your first test against a real target.