From 3fd65142955207e73f204dee1a165f05fe836943 Mon Sep 17 00:00:00 2001 From: Delta456 Date: Fri, 21 Mar 2025 13:21:20 +0530 Subject: [PATCH 1/4] [js] add `--websocket-port` flag when not connecting to existing connection for firefox --- javascript/node/selenium-webdriver/firefox.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/javascript/node/selenium-webdriver/firefox.js b/javascript/node/selenium-webdriver/firefox.js index f6cd1cf1e9d7e..2e69ac30797f4 100644 --- a/javascript/node/selenium-webdriver/firefox.js +++ b/javascript/node/selenium-webdriver/firefox.js @@ -121,6 +121,7 @@ const zip = require('./io/zip') const { Browser, Capabilities, Capability } = require('./lib/capabilities') const { Zip } = require('./io/zip') const { getBinaryPaths } = require('./common/driverFinder') +const portprober = require("./net/portprober"); const FIREFOX_CAPABILITY_KEY = 'moz:firefoxOptions' /** @@ -492,6 +493,10 @@ class ServiceBuilder extends remote.DriverService.Builder { */ constructor(opt_exe) { super(opt_exe) + if (!self.args.includes('--connect-existing')) { + self.args.append('--websocket-port') + self.args.append(`${portprober.findFreePort()}`) + } this.setLoopback(true) // Required. } From 2f26c3e8c015871c6f193d76f4370ba61bb74491 Mon Sep 17 00:00:00 2001 From: Delta456 Date: Mon, 24 Mar 2025 15:30:02 +0530 Subject: [PATCH 2/4] lint and fix code --- javascript/node/selenium-webdriver/firefox.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/javascript/node/selenium-webdriver/firefox.js b/javascript/node/selenium-webdriver/firefox.js index 2e69ac30797f4..a79099e39a07a 100644 --- a/javascript/node/selenium-webdriver/firefox.js +++ b/javascript/node/selenium-webdriver/firefox.js @@ -121,7 +121,7 @@ const zip = require('./io/zip') const { Browser, Capabilities, Capability } = require('./lib/capabilities') const { Zip } = require('./io/zip') const { getBinaryPaths } = require('./common/driverFinder') -const portprober = require("./net/portprober"); +const portprober = require("./net/portprober") const FIREFOX_CAPABILITY_KEY = 'moz:firefoxOptions' /** @@ -493,9 +493,9 @@ class ServiceBuilder extends remote.DriverService.Builder { */ constructor(opt_exe) { super(opt_exe) - if (!self.args.includes('--connect-existing')) { - self.args.append('--websocket-port') - self.args.append(`${portprober.findFreePort()}`) + if (!this.args.includes('--connect-existing')) { + this.args.append('--websocket-port') + this.args.append(`${portprober.findFreePort()}`) } this.setLoopback(true) // Required. } From c419b4c3f9b2a0e4ec3b11bb01ac3c1d9a8fb352 Mon Sep 17 00:00:00 2001 From: Delta456 Date: Mon, 24 Mar 2025 15:43:54 +0530 Subject: [PATCH 3/4] fmt --- javascript/node/selenium-webdriver/firefox.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/node/selenium-webdriver/firefox.js b/javascript/node/selenium-webdriver/firefox.js index a79099e39a07a..40d64c87d2c26 100644 --- a/javascript/node/selenium-webdriver/firefox.js +++ b/javascript/node/selenium-webdriver/firefox.js @@ -121,7 +121,7 @@ const zip = require('./io/zip') const { Browser, Capabilities, Capability } = require('./lib/capabilities') const { Zip } = require('./io/zip') const { getBinaryPaths } = require('./common/driverFinder') -const portprober = require("./net/portprober") +const portprober = require('./net/portprober') const FIREFOX_CAPABILITY_KEY = 'moz:firefoxOptions' /** From 5255f0190d0cecb438196e49c1d5095fca44a9c2 Mon Sep 17 00:00:00 2001 From: Delta456 Date: Tue, 25 Mar 2025 13:06:37 +0530 Subject: [PATCH 4/4] fix build --- javascript/node/selenium-webdriver/firefox.js | 5 ----- javascript/node/selenium-webdriver/index.js | 7 +++++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/javascript/node/selenium-webdriver/firefox.js b/javascript/node/selenium-webdriver/firefox.js index 40d64c87d2c26..f6cd1cf1e9d7e 100644 --- a/javascript/node/selenium-webdriver/firefox.js +++ b/javascript/node/selenium-webdriver/firefox.js @@ -121,7 +121,6 @@ const zip = require('./io/zip') const { Browser, Capabilities, Capability } = require('./lib/capabilities') const { Zip } = require('./io/zip') const { getBinaryPaths } = require('./common/driverFinder') -const portprober = require('./net/portprober') const FIREFOX_CAPABILITY_KEY = 'moz:firefoxOptions' /** @@ -493,10 +492,6 @@ class ServiceBuilder extends remote.DriverService.Builder { */ constructor(opt_exe) { super(opt_exe) - if (!this.args.includes('--connect-existing')) { - this.args.append('--websocket-port') - this.args.append(`${portprober.findFreePort()}`) - } this.setLoopback(true) // Required. } diff --git a/javascript/node/selenium-webdriver/index.js b/javascript/node/selenium-webdriver/index.js index 962b30c655bec..cacdbcb2eada3 100644 --- a/javascript/node/selenium-webdriver/index.js +++ b/javascript/node/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 @@ -676,9 +677,15 @@ class Builder { case Browser.FIREFOX: { let service = null + // 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 (this.firefoxService_) { service = this.firefoxService_.build() } + if (!service?.args.includes('--connect-existing')) { + service?.args.append('--websocket-port') + service?.args.append(`${portprober.findFreePort()}`) + } return createDriver(firefox.Driver, capabilities, service) }