SeleniumHQ / selenium

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

[🚀 Feature] [dotnet]: Release a separate Selenium Manager package with binaries #14033

Open nvborisenko opened 1 month ago

nvborisenko commented 1 month ago

Feature and motivation

Continuation of https://github.com/SeleniumHQ/selenium/issues/11694

We already have Selenium.WebDriver nuget package including selenium-manager binaries. What if selenium-manager binaries will be shipped as separate package?.. Let's say Selenium.WebDriver.Manager.

Why:

Usage example

No specific usage, just restructuring packages and dependencies.

We also can consider creation of Selenium Manager Tool.

dotnet tool install -g SeleniumManager
seleniummanager --browser chrome --version 120

Command name is a topic for discussion.

github-actions[bot] commented 1 month ago

@nvborisenko, 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!

titusfortner commented 1 month ago

The current plan is to still keep the versions of Selenium and Selenium Manager in sync, and since we need the Selenium package to require Selenium Manager, there didn't seem to be a lot of added value to releasing it in a separate package (the way Java does).

Is there a way in .NET / Nuget to create architecture specific packages, and have Selenium dynamically pull in the appropriate one? (i.e., #13021)

nvborisenko commented 1 month ago

At build phase - yes. An user is able to pull SM binaries he needs (even cached). If user builds his project for win64 - we can pull appropriate SM binary for him automatically.

The issue that build and runtime phases are absolutely different, user is able to build on win64, and execute on linux64. This is a problem which cannot be resolved implicitly (it is possible on behalf of user).

BTW There is unofficial way to reference to the package depending on platform. This feature is undocumented.

titusfortner commented 1 month ago

I'm not opposed to releasing it separately (Java does it, and I was going to investigate doing it for Ruby), but. I don't see much benefit to to it if there isn't a good way to allow a user to dynamically load a package targeting their architecture at run time.