Node.js test automation framework for end-to-end, unit and component testing in browsers and mobile apps via WebDriver, BiDi and Appium.
stevepryde/thirtyfour
A Selenium WebDriver client library for Rust, used to write automated UI tests for websites.
- Stars
- 1,443
- Forks
- 102
- Open issues
- 1
- Last commit
- 18 days ago
What is it?
thirtyfour is a Rust client for the Selenium / W3C WebDriver protocol, aimed at automated end-to-end testing of web applications. It can start browser sessions directly through a driver such as chromedriver, or through Selenium Standalone or Grid.
The library covers the common WebDriver surface: finding elements by selectors such as test ID, id, class, CSS, tag and XPath, sending keys and key combinations, running JavaScript, action chains, cookies, frame, window and alert switching, shadow DOM, and PNG screenshots. A query interface supports explicit waits and predicates, and component wrappers help structure tests in a page-object style. A browser-test runner attempts asynchronous cleanup on errors and panics.
Optional feature flags add typed Chrome DevTools Protocol commands, WebSocket-based CDP event subscription, and cross-browser WebDriver BiDi support. The crate is dual-licensed under MIT or Apache 2.0 and requires Rust 1.88 or later.
Key features
- 01Supports all W3C WebDriver and WebElement methods.
- 02Finds elements by test ID, id, class, CSS, tag and XPath selectors.
- 03Provides an explicit-wait query interface and component wrappers for page objects.
- 04Offers typed Chrome DevTools Protocol commands and optional CDP event subscription.
- 05Supports cross-browser WebDriver BiDi via an opt-in feature flag.
- 06Captures screenshots of the full browser or individual elements as PNG.
Use cases
- End-to-end UI testing of web applications written in Rust.
- Porting existing Selenium automation scripts to a Rust codebase.
- Automating browser workflows that need typed access to Chrome DevTools features.
Quick start
- 1
Add thirtyfour as a dependency to your Rust project (cargo add thirtyfour)
- 2
Start a WebDriver server such as chromedriver, then run the async example
cargo run --example tokio_async
Things to know
- Requires a running WebDriver server or browser driver such as chromedriver to run tests.
- The license is listed as NOASSERTION in metadata, though the README states dual MIT or Apache 2.0.
In collections
Topics
FAQ
- What is thirtyfour?
- A Selenium WebDriver client library for Rust, used to write automated UI tests for websites. thirtyfour is a Rust client for the Selenium / W3C WebDriver protocol, aimed at automated end-to-end testing of web applications. It can start browser sessions directly through a driver such as chromedriver, or through Selenium Standalone or Grid.
- Is thirtyfour free to use? What license does it have?
- thirtyfour is open source under the Other license. Check the license terms before using it in commercial products.
- Is thirtyfour still maintained?
- Actively maintained. The last commit to thirtyfour was on Oct 21, 2026.
- What can I use thirtyfour for?
- End-to-end UI testing of web applications written in Rust. Porting existing Selenium automation scripts to a Rust codebase. Automating browser workflows that need typed access to Chrome DevTools features.
- How do I install thirtyfour?
- Add thirtyfour as a dependency to your Rust project (cargo add thirtyfour) Start a WebDriver server such as chromedriver, then run the async example: cargo run --example tokio_async
- Where can I get thirtyfour?
- The source code and installation instructions are on GitHub: https://github.com/stevepryde/thirtyfour
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Python library that downloads, caches, and resolves Selenium browser driver binaries such as ChromeDriver and GeckoDriver from code.
A Go library that drives Chrome through the DevTools Protocol for web automation and scraping, with auto-waiting and browser download.
Playwright is a framework for web testing and automation that drives Chromium, Firefox, and WebKit through one API.
A JavaScript end-to-end testing framework that lets you write browser and mobile tests as readable, user-level steps across multiple engines.
A set of npm packages that wire the axe accessibility engine into CLI tools, browser automation frameworks, React, and WebDriver test suites.