Skip to content

[py][SM] Collect language version data in Selenium Manager#17591

Open
AutomatedTester wants to merge 3 commits into
trunkfrom
worktree-feature-language-version
Open

[py][SM] Collect language version data in Selenium Manager#17591
AutomatedTester wants to merge 3 commits into
trunkfrom
worktree-feature-language-version

Conversation

@AutomatedTester
Copy link
Copy Markdown
Member

@AutomatedTester AutomatedTester commented May 29, 2026

Summary

  • Adds --language-version CLI flag to Selenium Manager (Rust) to accept the runtime version of the invoking language binding
  • Wires the value through ManagerConfig, the SeleniumManager trait, and into the Props struct sent to Plausible.io telemetry
  • Updates the metadata dedup check so lang_version is part of the cache key (avoiding duplicate submissions)

Closes #16731

Deferred: Python binding arg

The Python --language-version arg is not included in this PR. The pre-compiled pinned binary in common/selenium_manager.bzl (selenium-manager-f6318a4) predates this change and rejects the flag with error: unexpected argument '--language-version' found. Passing it would break all RBE tests.

Follow-up steps:

  1. Merge this PR (Rust plumbing only)
  2. Run bazel run scripts:selenium_manager to rebuild and re-pin the binary in common/selenium_manager.bzl
  3. Add --language-version {major}.{minor} to py/selenium/webdriver/common/selenium_manager.py (and other bindings)

Test plan

  • bazel build //rust:selenium-manager — passes
  • bazel test //rust:unit — 14/14 pass
  • bazel test //py:unit — 27/27 pass
  • After re-pinning binary: verify Plausible.io dashboard shows lang_version property after a real browser session
  • Other bindings (Java, Ruby, JS, .NET) can add --language-version in follow-up PRs

Notes

The flag is optional in Rust — if not supplied, lang_version defaults to an empty string, preserving backwards compatibility.

Adds --language-version CLI flag to Selenium Manager so language
bindings can report their runtime version in telemetry. Python passes
its major.minor version (e.g. 3.12) to enable data-informed decisions
about language version deprecation (see issue #16731).
@selenium-ci selenium-ci added C-py Python Bindings C-rust Rust code is mostly Selenium Manager B-manager Selenium Manager labels May 29, 2026
The --language-version flag exists in the Rust SM binary when compiled
from source, but the pinned pre-compiled binary (selenium-manager-f6318a4)
in common/selenium_manager.bzl predates this change and rejects the flag.
Will re-add the Python arg in a follow-up once selenium_manager.bzl is
re-pinned to a binary that includes this flag.
@titusfortner
Copy link
Copy Markdown
Member

This PR will not close 16731, that is supposed to track all bindings, not just rust.

Also, this is a duplicate of #16733

@nvborisenko
Copy link
Copy Markdown
Member

50 cents: we will start to collect some data (in .NET it is even not related to language version). Then what?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-manager Selenium Manager C-py Python Bindings C-rust Rust code is mostly Selenium Manager

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[🚀 Feature]: Collect language version data in Selenium Manager

4 participants