PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchTo run Selenium tests on CircleCI, configure a job in .circleci/config.yml, start or reach a Selenium Grid endpoint from the test process, wait until Grid is ready, run your existing tests through a remote WebDriver, and save the results in CircleCI. For a small, disposable run, use a Grid Standalone service in the job’s network; for broader browser or machine coverage, connect the job to a private shared Grid. The correct WebDriver URL depends on that network topology—localhost is not automatically the right address.
The examples below are topology templates, not a universal, copy-and-run pipeline: your runtime image, Selenium image and version, readiness check, test command, report path, and endpoint must match your project. Pin images deliberately rather than relying on latest. CircleCI pipelines are configured in the repository and organize jobs through workflows; with the Docker executor, the first image is the primary container where job steps run.
As an Amazon Associate I earn from qualifying purchases.
Choose where Selenium Grid will run
Selenium Grid accepts WebDriver commands and routes them to available browser sessions. It is useful when you need to distribute sessions or cover different browsers, browser versions, or platforms. Choose the simplest topology that meets the coverage and capacity needs of your tests.
Free tools Windows power users keep installed
One-click scans. No signup required.
Grid Standalone in the CI job network
For a small, isolated run, start a Grid Standalone service alongside the test container. Standalone defaults to port 4444. The test container must be able to resolve and connect to the service address. In a CircleCI Docker job with primary and secondary containers on the shared job network, use the service’s configured hostname and port—not an assumed host-machine address. CircleCI’s browser-testing guide illustrates launching Selenium as a background process, but its older Selenium 3.5 download example should not be treated as a current version recommendation.
#1 Best Overall
Separate or shared Grid
Use Hub-and-Node or Distributed Grid when you need browser instances on separate machines, distinct browser or operating-system combinations, or more capacity than one job-local service can provide. Configure the test client to call the Hub or, for Distributed Grid, the Router; do not point it at an arbitrary node. Ensure the Grid components can communicate over the ports required by the selected topology. In Hub-and-Node mode, Selenium documents default Event Bus ports 4442 and 4443.
CircleCI’s Docker executor can run secondary service containers on a shared network. If Docker Compose must manage a multi-container setup, CircleCI recommends considering the machine executor; Remote Docker has different networking and volume behavior, so local Compose assumptions may not transfer. See the Docker executor guide and Docker Compose guide.
Rank #2
Configure the CircleCI job
Commit a configuration at .circleci/config.yml. The job’s executor determines where commands run, and its primary image needs the language runtime and dependencies required by your test repository. Add a compatible Grid service image if Grid runs in the job network; select and pin an image tag that you have verified for your setup.
This illustrative template deliberately leaves topology-specific values open. Replace every angle-bracketed item, set GRID_URL to an address reachable from the actual test process, and ensure the test framework writes results to the directory you store.
Rank #3
version: 2.1
jobs:
browser-tests:
docker:
- image: cimg/<runtime>:<pinned-tag>
# If Grid is a secondary container, add a compatible, pinned
# Selenium Grid service image here and use its network hostname.
steps:
- checkout
- run:
name: Install project dependencies
command: <install project dependencies>
- run:
name: Wait for Grid readiness
command: <poll the Grid status endpoint with a finite timeout>
- run:
name: Run browser tests
command: <invoke the project test command with GRID_URL>
- store_test_results:
path: <test-results-directory>
workflows:
browser-tests:
jobs:
- browser-tests
Configure the workflow’s triggers and any required environment variables for your repository. CircleCI’s configuration reference documents supported configuration keys, and its automated testing guide explains test integration and output. There is no single correct dependency-install command, test command, readiness utility, or report directory for every language and framework.
Connect RemoteWebDriver to the reachable Grid URL
Use the endpoint matching the deployment: Grid Standalone’s default is http://localhost:4444 only if the Grid server shares the relevant network namespace or CircleCI network arrangement with the test process. In a secondary-container setup, use that service’s hostname on the job network. For Hub-and-Node mode, use the Hub address; for Distributed Grid, use the Router address. Confirm reachability from the container that actually runs the tests rather than inferring it from the CircleCI host or Remote Docker daemon.
Rank #4
Selenium’s Java API accepts a Grid URL when constructing RemoteWebDriver. The following snippet shows the shape of the client setup; use the capabilities and browser options supported by your Selenium version and Grid nodes.
URL gridUrl = URI.create(System.getenv("GRID_URL")).toURL();
ChromeOptions options = new ChromeOptions();
WebDriver driver = new RemoteWebDriver(gridUrl, options);
try {
// Run the existing browser test.
} finally {
driver.quit();
}
Other language bindings provide equivalent remote-driver APIs. Check Selenium Grid endpoints for endpoint behavior and the Grid Getting Started guide for current setup details.
Best Value
Start reliably, run tests, and retain results
- Start or select Grid. Bring up the disposable service before the suite, or configure access to the managed private Grid. Check that the Grid version and available browser match the client’s requested capabilities.
- Poll readiness with a deadline. Query the Grid status endpoint from the test container until it responds ready or a finite timeout expires. A fixed short sleep is vulnerable to startup races; set the timeout to suit the environment and fail with useful output if readiness is not reached.
- Run the existing suite against the remote URL. Pass the chosen endpoint through configuration such as
GRID_URL, and have the framework create remote sessions. Always quit sessions in cleanup paths so Grid slots are released even when a test fails. - Store test reports and useful logs. Configure the framework to emit JUnit-style XML or another supported result format, then point
store_test_resultsat the real report directory. Retain enough job and Selenium server output to diagnose failures. CircleCI’s test guide covers result integration; report formats and paths depend on the framework.
Plan parallelism and Grid capacity
Grid can distribute WebDriver sessions, but increasing concurrency does not guarantee a faster pipeline. Runtime depends on test duration, resource limits, queueing, and available node slots. Selenium’s current Grid sizing guidance suggests roughly 1 GB of RAM per browser session and a default concurrent-session limit tied to available processors. These are Selenium Project recommendations, not guarantees; the page was marked modified September 16, 2026. Measure your browser and test workload before raising parallelism.
| Topology | Best fit | Operational trade-off |
|---|---|---|
| Standalone service in the job network | A small, disposable run with one machine’s installed browser coverage | Simpler to start and discard; concurrency and browser coverage are bounded by that environment. |
| Hub-and-Node | Nodes on separate machines or with distinct browser and platform setups | Requires reachable Hub and Event Bus communication and ongoing node capacity management. |
| Distributed Grid | A deployment that needs Grid components separated across infrastructure | Offers component separation but requires operating and securing those components and directing clients to the Router. |
Grid’s architecture and applicability guides explain these modes and their trade-offs: Grid architecture and When to Use Grid. Base the session limit on measured CPU, memory, stability, and the browsers actually installed on each node.
Keep the Grid private
Do not expose an unauthenticated Grid endpoint to the public internet. Selenium warns that an unprotected Grid can expose internal applications and allow third parties to run custom binaries. Keep a job-local Grid inside the CI network, or put shared infrastructure behind appropriate network controls. Expose only ports the selected topology needs; Hub-and-Node’s default Event Bus ports are 4442 and 4443.
Troubleshoot common failures
- Connection refused or name resolution failure: The test process cannot reach the configured host or port, or Grid is not listening yet. Verify the URL from the test container, confirm the service hostname and network arrangement, and check Grid logs and readiness before the suite starts.
- Session creation fails: The requested browser capability may not match a browser available on any node, or the Grid may have no free slots. Check node registration, requested browser/version/platform, and active sessions; reduce parallel sessions or add suitable capacity.
- Tests fail intermittently at startup: A fixed delay may expire before Grid is ready. Replace it with a status poll that has a finite timeout and captures diagnostic output on failure.
- Later tests cannot obtain sessions: Earlier tests may have left sessions open. Ensure every test path calls
quit(), including failure and teardown paths, then inspect Grid session status and logs. - CircleCI shows no test results: The configured report path may not match where the framework writes files, or the framework may not emit a supported format. Generate reports before storing them and align the path with
store_test_results. - Container or Compose networking behaves differently than expected: Docker executor, Remote Docker, and machine-executor setups do not share identical networking and volume behavior. Re-check the chosen executor’s network boundary and test connectivity from the process that runs WebDriver.
Or skip the browser setup
If the task is simply to capture a website rather than run interactive Selenium tests, ScreenshotNeo is a website screenshot API and MCP server with a one-request capture endpoint. It is not a Selenium Grid replacement for browser test suites. One GET request returns a PNG, JPEG, WebP, or PDF; for example, using its documented cURL form:
Quick Recap
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo documentation for API parameters and response details. It accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, with response headers indicating the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Sign up for 1,000 free screenshots a month with no card.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




