Use the language binding before cloning the contributor repository
Selenium lets a Java or Python program open a browser, fill a form, and check what appears after a click. Its W3C WebDriver foundation matters when browser automation needs to fit an existing language and tooling stack. I'd choose it for that compatibility, especially where a working WebDriver fleet already exists. Selenium's manual describes local and remote browser control.
Cloning Selenium puts you in a different job. Our checkout contained 5,307 files, roughly 666,794 lines of source, and occupied 75.9 MB before installation. The README explicitly addresses contributors and sends ordinary users to the manual. Those source measurements describe the repository we handled. They say nothing about the size of a published language package or the memory a browser session needs.
What happened when we ran it
Our pnpm install of commit 6d04770 failed with exit code 1 after 11 seconds on October 3, 2026. We used a fresh Debian sandbox with 3 CPUs, 8 GB of RAM, and image lab-node:22. The container had no secrets or elevated privileges. This was a source-checkout installation attempt. The supplied measurements contain no build result or browser-execution result, so we cannot claim either succeeded or failed.
The log names esbuild@0.27.0 as having an ignored build script and ends with ERR_PNPM_IGNORED_BUILDS. It suggests pnpm approve-builds to choose which scripts may run. A separate warning says package.json and pnpm-workspace.yaml disagree about workspaces, and pnpm uses the latter. The scope covers all 4 workspace projects. That warning is visible, but the log does not establish it as the cause of the failure. Nor does it identify a missing Debian package.
Source contribution requires the Bazel toolchain
The README calls for Bazelisk and a Java JDK, with JAVA_HOME pointing to the JDK. Its commands target individual language directories or Grid through Bazel and the project's ./go wrapper. Windows contribution adds MSYS2, Visual C++ tools, and path configuration. A developer hoping to patch the source during an afternoon should first check whether that toolchain fits their workstation policy.
Our scan found 38 CI workflow files and monorepo workspaces, while reporting no Dockerfile and no tests directory. Treat the latter as scan findings for commit 6d04770, rather than a claim that Selenium lacks those assets everywhere. The current README links a nested developer-image Dockerfile. Most importantly, the failed pnpm step gives us no basis for judging the upstream suite. Source contribution still needs a deliberate environment choice beyond a Node container.
Automatic driver management still needs a prepared browser host
Selenium Manager can discover, download, and cache browser drivers when a caller hasn't supplied one. That removes a recurring manual task, but it also introduces network access and cache configuration into session startup. Proxy and offline environments need explicit preparation. The documentation warns that vendor browser downloads on Linux can require system libraries, with concrete Firefox and Chrome examples. Downloaded browser binaries still need a usable host.
The 8 GB available in our sandbox is an environment detail, not a recommended capacity for Selenium. We have no browser-memory measurement to turn into a sizing rule. A local script needs a language binding and a usable browser/driver combination, with no hosted Selenium account required. Grid adds a server endpoint and browser hosts. If you choose a commercial browser service, its account credentials belong to that service, and its operating assumptions need separate review.
Grid earns its cost when remote browser coverage matters
Selenium Grid routes WebDriver commands to remote browser instances and supports work across machines, browser versions, and platforms. This is a reason to retain Selenium when your organization already runs that infrastructure. It also means someone owns the browser hosts and their availability. Start with the browser combinations your users actually need. Adding remote machines simply because Grid supports them creates operations work without proving better coverage.
Our 3-CPU container did not provide a measured Grid workload. Nothing in the 11-second installation failure tells us how many concurrent sessions a server can sustain or how quickly a checkout flow runs. I'd separate a local adoption trial from a Grid capacity exercise. The first asks whether your chosen binding can drive the required browser. The second asks what happens when your actual scripts compete for the same browser hosts.
JavaScript teams have alternatives with more workflow included
Playwright includes a test runner with automatic waiting, browser isolation, and tracing. For a new JavaScript application, those features are a practical reason to start there. WebdriverIO fits teams that want a Node framework around WebDriver and Appium, including framework integrations and reporters. It can preserve the protocol choice while changing the authoring experience. Neither recommendation claims a speed advantage we measured.
The 666,794 source lines in our checkout don't decide that comparison. The useful distinction is who supplies the surrounding workflow. Selenium's waiting guide explains conditional waits and warns against mixing implicit and explicit waits. Your team must apply that guidance consistently. If a save button becomes usable only after a response arrives, waiting for that condition is a maintenance decision your scripts need to express.
October maintenance is active; the checkout result remains unresolved
The repository's last push was October 12, 2026. GitHub listed 184 open issues and PRs, and release selenium-4.51.0 was published October 9. Recent activity includes a closed Java HttpClient compatibility issue and open Ruby and Bazel work. Together, the push date and discussion activity show ongoing maintenance. The release notes include concrete fixes across language components. The queue includes PRs, not just bugs.
Our failed 11-second install belongs to commit 6d04770, not a verified run of that later release. Choose Selenium when existing bindings or Grid coverage justify owning browser configuration and synchronization. Before depending on a source checkout, review the esbuild script that pnpm flagged and make an explicit approval decision. A successful package-based browser trial would answer a separate adoption question; this checkout still needs its installation blocker resolved.

