[java] Handle system proxy setting for arguments passed to selenium manager#17402
[java] Handle system proxy setting for arguments passed to selenium manager#17402bhecquet wants to merge 1 commit intoSeleniumHQ:trunkfrom
Conversation
… selenium manager
Review Summary by QodoHandle system proxy setting for Selenium Manager arguments
WalkthroughsDescription• Exclude SYSTEM proxy type from Selenium Manager arguments • Add unit tests for SYSTEM, AUTODETECT, and DIRECT proxy types • Prevent system proxy settings from being passed to manager File Changes1. java/src/org/openqa/selenium/remote/service/DriverFinder.java
|
Code Review by Qodo
1. Dangling --proxy argument
|
| Proxy proxy = Proxy.extractFrom(options); | ||
| if (proxy != null | ||
| && proxy.getProxyType() != Proxy.ProxyType.DIRECT | ||
| && proxy.getProxyType() != Proxy.ProxyType.AUTODETECT) { | ||
| && proxy.getProxyType() != Proxy.ProxyType.AUTODETECT | ||
| && proxy.getProxyType() != Proxy.ProxyType.SYSTEM) { | ||
| arguments.add("--proxy"); | ||
| if (proxy.getSslProxy() != null) { | ||
| arguments.add(proxy.getSslProxy()); |
There was a problem hiding this comment.
1. Dangling --proxy argument 🐞 Bug ≡ Correctness
DriverFinder.toArguments() can add --proxy without a following proxy value when ProxyType is neither DIRECT/AUTODETECT/SYSTEM but no ssl/http/pac value is set (e.g., default UNSPECIFIED or MANUAL with only socksProxy/noProxy). This can cause Selenium Manager to mis-parse subsequent flags (since it appends more args after the provided list) and fail driver/browser resolution.
Agent Prompt
### Issue description
`DriverFinder.toArguments()` may append `--proxy` without any proxy value for some valid `Proxy` configurations (e.g., `ProxyType.UNSPECIFIED` default, or `ProxyType.MANUAL` where only `socksProxy`/`noProxy` is set). This can break Selenium Manager CLI parsing because additional flags are appended later.
### Issue Context
Selenium Manager is invoked with the list from `DriverFinder.toArguments()`, and then `SeleniumManager#getBinaryPaths` appends additional flags (e.g., `--language-binding`, `--output`). A dangling `--proxy` means the next appended flag can be consumed as the proxy value.
### Fix Focus Areas
- java/src/org/openqa/selenium/remote/service/DriverFinder.java[153-166]
- java/src/org/openqa/selenium/manager/SeleniumManager.java[266-279]
- java/test/org/openqa/selenium/remote/service/DriverFinderTest.java[155-250]
### Suggested fix
- Compute a `proxyArg` first (first non-null of `sslProxy`, `httpProxy`, `proxyAutoconfigUrl`, and *optionally* `socksProxy` if Selenium Manager supports it).
- Only add `--proxy` when `proxyArg != null && !proxyArg.isEmpty()`.
- Consider explicitly excluding `ProxyType.UNSPECIFIED` (or treating it as "no proxy").
### Tests to add/adjust
- Add a unit test where capabilities include `new Proxy()` (UNSPECIFIED) and assert Selenium Manager is called **without** `--proxy`.
- Add a unit test for `new Proxy().setNoProxy("...")` (MANUAL but no http/ssl/pac) and assert Selenium Manager is called **without** `--proxy` (or with an explicit supported value, depending on intended behavior).
- (Optional) Add a unit test for `setSocksProxy` verifying behavior matches the intended Selenium Manager support.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
This PR handles System proxy setting when using selenium manager
🔗 Related Issues
Fixes #17358
💥 What does this PR do?
The PR adds "system" proxy in the exclusion when building argument list of selenium manager
I've also added some units tests on this part, and also checked in a real test environment
🤖 AI assistance
💡 Additional Considerations
N/A
🔄 Types of changes