ci: run integration tests against local selenium/standalone-chrome [9.6] - #2313
Merged
Conversation
Backport of #2232 from main. Replace the SauceLabs cloud grid + Sauce Connect tunnel with a selenium/standalone-chrome service container on the GitHub Actions runner. Tests reuse the existing remote-driver code path, just pointed at localhost:4444 instead of the Sauce hub. The daily dependency-bump workflow opens PRs on all maintained branches at once, and the SauceLabs-based branches then compete for the same org-wide session pool. With forkCount=5 x testsInParallel=5 each, runs exhaust it and ElementQueryIT fails with SessionNotCreated: Your organization has reached its concurrent session limit. Dropping SauceLabs removes the shared limit entirely, so branches no longer contend and no global CI queue is needed. Drop Safari and Windows 10 platform forcing from the integration test browser configurations so capabilities match what the Linux container can serve. The SauceLabsIntegration public API and routing in BrowserExtension / ParallelTest are unchanged - users who set SAUCE_USERNAME / SAUCE_ACCESS_KEY externally still get the Sauce path. The workflow keeps 9.6's single build-and-test job rather than main's split matrix jobs; only the grid wiring changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ZheSun88
enabled auto-merge (squash)
September 10, 2026 07:31
ZheSun88
approved these changes
Sep 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #2232 from
mainto9.6.Problem
The daily dependency-bump workflow opens PRs on all maintained branches at once. The SauceLabs-based branches (
8.3,9.5,9.6) then compete for the same org-wide session pool, each requesting up to 25 sessions (failsafe.forkCount=5×testsInParallel=5).Today that exhausted the pool and run 34433760024 (PR #2307, a Selenium bump) failed in
ElementQueryITwith 9 errors:The remaining errors were 900s timeouts from tests queued behind the exhausted pool. Nothing to do with the Selenium bump itself.
Change
Replace the SauceLabs cloud grid + Sauce Connect tunnel with a
selenium/standalone-chromeservice container on the GitHub Actions runner, asmainalready does. Tests reuse the existing remote-driver code path, just pointed atlocalhost:4444instead of the Sauce hub.This removes the shared org-wide limit entirely, so branches no longer contend and no global CI queue is needed.
Also drops Safari and Windows 10 platform forcing from the integration test browser configurations, so capabilities match what the Linux container can serve.
The
SauceLabsIntegrationpublic API and the routing inBrowserExtension/ParallelTestare unchanged — users who setSAUCE_USERNAME/SAUCE_ACCESS_KEYexternally still get the Sauce path.Notes on the backport
9.6already has the same test structure anddeployment.hostnamesupport..github/workflows/validation.ymlneeded hand-resolution:mainhas since split validation into separate matrix jobs (including a JUnit 6 module that does not exist on9.6). This keeps9.6's singlebuild-and-testjob and changes only the grid wiring.Verification
formatter:validatepasses on both modules.host.docker.internalservice-container networking only exists on the runner. That part rests on it being proven onmain.9.5and8.3have the identical SauceLabs setup and the same exposure, if the same backport is wanted there.🤖 Generated with Claude Code