Migrate remaining grid management functionality to 'selenium-grid-manager'
Selenium Foundation 36.0.0 Release Notes
Breaking Changes
Removed Settings
GRID_LIFECYCLE— replaced by unconditionalLifecycleServletregistration on S3 nodesGRID_SERVLETS— replaced byHUB_SERVLETS(S3 only) andNODE_SERVLETS(S3 only)GRID_EXAMPLES— replaced bySERVE_EXAMPLE_SITE
New Settings
| Setting | Key | Default | Description |
|---|---|---|---|
SERVE_EXAMPLE_SITE |
selenium.grid.serve.example.site |
true |
Whether to serve the example page site alongside the local Grid instance |
HUB_SERVLETS |
selenium.hub.servlets |
(none) | Comma-delimited list of servlet classes to host on the S3 hub server |
NODE_SERVLETS |
selenium.grid.node.servlets |
(none) | Comma-delimited list of servlet classes to host on S3 node servers |
SIDECAR_PORT |
selenium.grid.sidecar.port |
9001 |
Port on which the sidecar servlet container listens |
SIDECAR_STOP_TOKEN |
selenium.grid.sidecar.stop.token |
(none) | Token required to authorize sensitive sidecar operations |
SIDECAR_AUTH_STRATEGY |
selenium.grid.sidecar.auth |
DefaultSidecarAuthStrategy |
Fully-qualified class name of the SidecarAuthStrategy implementation |
SIDECAR_SESSION_TTL |
selenium.grid.sidecar.session.ttl |
30 |
Session TTL in minutes for authenticated sidecar browser sessions |
SIDECAR_MONITOR_FILE |
selenium.grid.sidecar.monitor.file |
monitored-grids.json |
File used to persist monitored remote Grid URLs across sidecar restarts |
SIDECAR_SCAN_INTERVAL |
selenium.grid.sidecar.scan.interval |
10 |
Interval in seconds between background scan chunks |
SIDECAR_SCAN_START |
selenium.grid.sidecar.scan.start |
4444 |
First port in the range scanned for unmanaged Grid instances |
SIDECAR_SCAN_END |
selenium.grid.sidecar.scan.end |
65535 |
Last port in the range scanned for unmanaged Grid instances |
SIDECAR_SCAN_STEP |
selenium.grid.sidecar.scan.step |
10 |
Port step size used during normal scans |
SIDECAR_SCAN_CHUNK_DURATION |
selenium.grid.sidecar.scan.chunk.duration |
30000 |
Maximum duration in milliseconds of each scan chunk |
GRID_PUB_PORT |
selenium.grid.pub.port |
auto-allocated | Event bus publisher port for the local Selenium 4 Grid hub |
GRID_SUB_PORT |
selenium.grid.sub.port |
auto-allocated | Event bus subscriber port for the local Selenium 4 Grid hub |
GRID_PORT_ALLOCATOR |
selenium.grid.port.allocator |
DefaultGridPortAllocationStrategy |
Fully-qualified class name of the GridPortAllocationStrategy implementation |
Removed APIs
IGridServerinterface — replaced byGridServerbase class throughoutIGridServerFactoryinterface andSeleniumGrid.registerGridServerFactory()AbstractSeleniumConfig.createHubConfig()— moved toselenium-grid-managerAbstractSeleniumConfig.createNodeConfig()— moved toselenium-grid-managerAbstractSeleniumConfig.getHubConfigPath()— moved toselenium-grid-managerAbstractSeleniumConfig.getNodeConfigPath()— moved toselenium-grid-managerAbstractSeleniumConfig.getAppiumConfigPath()— moved toselenium-grid-managerAbstractSeleniumConfig.appiumWithPM2()— PM2 is now unconditionally required for AppiumGridServer.getGridProxies(SeleniumConfig, URL)—SeleniumConfigparameter removedGridServer.getNodeCapabilities(SeleniumConfig, URL, URL)—SeleniumConfigparameter removedExamplePageLauncher— example page site now hosted by sidecar- Version-specific
GridServerimplementations — consolidated tosrc/main/java - Version-specific
HostUtilsimplementations — consolidated tosrc/main/javawith pure Java network interface detection - Version-specific
AndroidPageimplementations — consolidated tosrc/main/java - Version-specific
ExamplePageServletimplementations — consolidated tosrc/main/java - Version-specific
DataUtilsimplementations — consolidated tosrc/main/java
Moved Classes
NodeStatusV4,NodesV4,GridProxyResponseV3moved to newcom.nordstrom.automation.selenium.gridpackageFoundationSlotMatchermoved toselenium-grid-manager- Hub/node configuration templates moved to
selenium-grid-manager
Modified APIs
AbstractSeleniumConfig.getConfigPath()— made publicAbstractSeleniumConfig.getDefaults()— now correctly copies superclass map before adding entries
New Features
Grid API Provider Infrastructure
A new ServiceLoader-based API for version-agnostic Grid inspection:
GridApiProvider— interface for version-specific Grid interactionGridApiProviderRegistry— registry of discovered providers keyed by API versionGridApiProviderV3— Selenium 3 implementation using proxy API and console scrapingGridApiProviderV4— Selenium 4 implementation using GraphQL API
Hub Detection
GridUtility.isSelenium3Hub(URL)— discriminating Selenium 3 hub detection via/grid/api/hub/GridUtility.isSelenium4Hub(URL)— discriminating Selenium 4 hub detection via GraphQLgrid{uri}queryGridUtility.getRawHttpResponse(String)— URL-encoding-safe HTTP GET for endpoints with literal query parameters
Wait Support
SearchContextWait.until(ExpectedCondition)— version-agnostic overload bridgingFluentWait<SearchContext>andWebDriver-basedExpectedCondition
Additional Improvements
AbstractSeleniumConfig.fromJson()— version-agnostic JSON deserializationGridServer.isHubActive()— now checks both S3 and S4 hub endpoints, supporting cross-version hub detectionGridServer.isNodeRegistered()andgetGridProxies()delegate toGridApiProviderRegistry