Selenium is a browser automation framework that provides infrastructure for the W3C WebDriver specification, enabling platform and language-neutral coding interfaces compatible with all major web browsers. The project serves as an umbrella for various tools and libraries that automate web browser interactions, with primary support across Java, Python, JavaScript, Ruby, Rust, and .NET languages.
The repository is built using Bazel as its build system, which manages dependency downloads, generates required binaries, and executes tests efficiently. The project structure uses BUILD.bazel files to define modules that can be built, with targets referenced using Bazel's naming convention. Common Bazel commands like bazel build, bazel run, and bazel test are frequently wrapped with custom Rake commands executed through a ./go command interface. The codebase requires Java JDK version 17 or greater and Bazelisk, a Bazel wrapper that automatically downloads the specified Bazel version.
Development environments can be set up locally across all platforms, with platform-specific requirements documented for macOS, Windows, and Linux. For contributors who prefer not to set up local environments, the project offers alternatives including GitPod, Dev Containers, and Docker images. The repository also supports Git worktrees with Bazel caching to avoid redundant dependency downloads and rebuilds across multiple checkouts.
The project is classified across multiple automation and testing domains including software testing, test automation, cross-browser testing, web automation, WebDriver API, end-to-end testing, Selenium IDE, locators, test scripts, Selenium Grid, UI testing, and browser testing. The repository overlaps with contributors from microsoft/vscode, microsoft/typescript, and rust-lang/rust, suggesting cross-project collaboration and shared expertise.
Development practices include Google Java Format for linting Java code, with an auto-formatting script available at ./scripts/format.sh. Dependencies are centrally managed through a MODULE.bazel file, with tools provided to update and pin new dependencies automatically. The project emphasizes contribution guidelines documented in CONTRIBUTING.md and provides comprehensive setup documentation for Windows developers, including both automatic installation scripts and manual installation options with detailed environment variable configuration.
The repository includes extensive documentation for users through a User Manual at selenium.dev/documentation and multiple support channels for those encountering issues during implementation or contribution.