SeleniumHQ / selenium

A browser automation framework and ecosystem.
https://selenium.dev
Apache License 2.0
29.74k stars 8.02k forks source link

[🐛 Bug]: ChromiumOptions: android-specific options are removed after merge #14133

Open kool79 opened 2 weeks ago

kool79 commented 2 weeks ago

What happened?

  1. Create ChromiumOptions (ChromeOptions) and set android-specific properties (activity/package/sn/process)
  2. Create MutableCapabilities (empty one)
  3. Merge ChromiumOptions with Mutable capabilities Expected: result contain the chromiumOptions Actual: all android-related options (from the ChromiumOptions.androidOptions field) are removed scr_20240614T01_18_10

How can we reproduce the issue?

var original = new ChromeOptions();
        original.setAndroidActivity("co_activity");
        original.setAndroidPackage("co_package");
        original.setExperimentalOption("experimental", "co_experimental");
        original.addArguments("--co_argument");

        System.out.println("Original :: " + original.asMap());

        var caps = new MutableCapabilities();
        var merged = original.merge(caps);

        System.out.println("Merged   :: " + merged.asMap());

Relevant log output

Original :: {browserName=chrome, goog:chromeOptions={androidActivity=co_activity, androidPackage=co_package, args=[--co_argument], experimental=co_experimental, extensions=[]}}
Merged   :: {browserName=chrome, goog:chromeOptions={args=[--co_argument], experimental=co_experimental, extensions=[]}}

Operating System

windows 10

Selenium version

java 4.21.0

What are the browser(s) and version(s) where you see this issue?

n/a

What are the browser driver(s) and version(s) where you see this issue?

n/a

Are you using Selenium Grid?

n/a

github-actions[bot] commented 2 weeks ago

@kool79, thank you for creating this issue. We will troubleshoot it as soon as we can.


Info for maintainers

Triage this issue by using labels.

If information is missing, add a helpful comment and then I-issue-template label.

If the issue is a question, add the I-question label.

If the issue is valid but there is no time to troubleshoot it, consider adding the help wanted label.

If the issue requires changes or fixes from an external project (e.g., ChromeDriver, GeckoDriver, MSEdgeDriver, W3C), add the applicable G-* label, and it will provide the correct link and auto-close the issue.

After troubleshooting the issue, please add the R-awaiting answer label.

Thank you!

iampopovich commented 17 hours ago

I suspect that the issue lies in the ChromiumOptions.mergeInPlace method. I am trying to understand in detail how it copies capabilities and whether the name affects their copying in our case.