See @.local/AGENTS.md for additional guidance
Selenium is a Bazel-built monorepo implementing the W3C WebDriver (and related) protocols, shipping multiple language bindings plus Grid and Selenium Manager. The repository README is aimed at contributors; end-user docs live elsewhere.
go/go.bat and frequently used by CI jobsbazel query ... to locate labels before build/testbazel query to explore build graph before reading filesBindings (see AGENTS.md in each directory for language-specific details):
java/py/rb/javascript/selenium-webdriver/dotnet/Shared/high-risk areas:
rust/ (Selenium Manager, see rust/AGENTS.md)common/ (build/test wiring; affects multiple areas)common/src/ (test HTML fixtures)javascript/atoms/ (shared JS atoms; high blast radius)scripts/, rake_tasks/, .github/, Rakefile (tooling/build)third_party/ treat as read-onlybazel-*/ treat as generated outputThe .local/ directory (gitignored) is available for generated artifacts or temporary files:
--output_base=.local/bazel-out if bazel output directory restrictedWhen changing user-visible behavior, compare with at least one other binding:
rg <term> java/ py/ rb/ dotnet/ javascript/selenium-webdriver/If behavior is shared/low-level (protocol, serialization, “remote”/transport), suggest follow-up parity work or to file an issue
When implementing solutions prefer writing a test for it first Prefer small (unit) tests over browser tests for speed/reliability Avoid mocks—they can misrepresent API contracts
Useful flags:
--test_size_filters=small (unit tests only)--test_output=all (display console output)--cache_test_results=no (force re-run) See language-specific AGENTS.md for applicable testing usageAdd logging where users may need insight into what's happening See language-specific AGENTS.md for applicable logging usage
This project does not follow semantic versioning (semver); before removing public functionality, mark it as deprecated with a message pointing to the alternative. See language-specific AGENTS.md for applicable deprecation usage
trunk branchbazel clean --expunge./scripts/format.sh or ./go all:lint before pushing to prevent CI failuresMODULE.bazel / repin flows