From 4195218846b5df35cc10cedc7d90c385a7f8e5cd Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Sat, 1 Aug 2026 07:41:50 +0000 Subject: [PATCH] ci: fix Sauce Labs E2E capabilities and SSL bumping in Sauce Connect 5 - Revert `multiCapabilities` in `protractor-saucelabs.conf.js` to use pure legacy JSON Wire Protocol (JWP) capabilities (`browserName`, `version`, `platform`, `tunnelIdentifier`). This is required by Protractor 7 (`selenium-webdriver@3.6.0`) and resolves errors across Chrome, Edge, Firefox, and Safari in `//tests:e2e.saucelabs`. - Set `tlsPassthroughDomains: all` in `.github/workflows/ci.yml` for `saucelabs/sauce-connect-action@v3` to disable SSL bumping across all domains in Sauce Connect 5. --- .github/workflows/ci.yml | 6 +++++ tests/e2e/assets/protractor-saucelabs.conf.js | 22 ++++--------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 368b8738921f..04554d0a7ee1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -226,6 +226,12 @@ jobs: region: us-west-1 tunnelName: ${{ env.SAUCE_TUNNEL_IDENTIFIER }} proxyLocalhost: allow + # By default we disable SSL bumping for all requests. This is because SSL bumping is not needed + # for our test setup and in order to perform the SSL bumping, Saucelabs intercepts all HTTP + # requests in the tunnel VM and modifies them. This can cause flakiness as it makes all requests + # dependent on the SSL bumping middleware. + # See: https://wiki.saucelabs.com/display/DOCS/Troubleshooting+Sauce+Connect#TroubleshootingSauceConnect-DisablingSSLBumping + tlsPassthroughDomains: all - name: Run E2E Browser tests env: SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }} diff --git a/tests/e2e/assets/protractor-saucelabs.conf.js b/tests/e2e/assets/protractor-saucelabs.conf.js index c0d21b5aa86d..5e96900457f0 100644 --- a/tests/e2e/assets/protractor-saucelabs.conf.js +++ b/tests/e2e/assets/protractor-saucelabs.conf.js @@ -62,24 +62,10 @@ exports.config = { specs: ['./src/**/*.e2e-spec.ts'], // NOTE: https://saucelabs.com/products/platform-configurator can be used to determine configuration values - multiCapabilities: capabilities.map((caps) => { - const config = { - ...caps, - browserVersion: caps.version, - platformName: caps.platform, - }; - - if (tunnelIdentifier) { - return { - ...config, - 'sauce:options': { - tunnelName: tunnelIdentifier, - }, - }; - } - - return config; - }), + multiCapabilities: capabilities.map((caps) => ({ + ...caps, + tunnelIdentifier, + })), // Only allow one session at a time to prevent over saturation of Saucelabs sessions. maxSessions: 1,