diff --git a/javascript/selenium-webdriver/index.js b/javascript/selenium-webdriver/index.js index 962b30c655bec..bd06bcdc0f261 100644 --- a/javascript/selenium-webdriver/index.js +++ b/javascript/selenium-webdriver/index.js @@ -44,6 +44,7 @@ const BrowsingContext = require('./bidi/browsingContext') const BrowsingContextInspector = require('./bidi/browsingContextInspector') const ScriptManager = require('./bidi/scriptManager') const NetworkInspector = require('./bidi/networkInspector') +const portprober = require('./net/portprober') const version = require('./package.json').version const Browser = capabilities.Browser @@ -679,6 +680,15 @@ class Builder { if (this.firefoxService_) { service = this.firefoxService_.build() } + + // Find a free port before starting Firefox + const port = portprober.findFreePort(); + + // Allocate a free port for the websocket only when not connecting to an existing instance + // This avoids conflicts when multiple Firefox instances have started + if (!service?.options_.args.includes('--connect-existing')) { + service?.addArguments('--websocket-port', `${port}`) + } return createDriver(firefox.Driver, capabilities, service) }