Skip to content

[🚀 Feature]: Add support for chrome-headless-shell to Selenium Manager #16276

@robinetmiller

Description

@robinetmiller

Background

Previously it was decided in #13600 (2024-03) that chrome-headless-shell shall not be supported by Selenium Manager, due to it being part of the main chrome binary.

There's nothing separate to download, it's part of the Chrome installation, and there's not a good reason to support this independently.

This is no longer true, as --headless=old is no longer supported as of Chrome 132 (2025-01-14):

We're happy to announce that the old Headless mode will be removed in Chrome 132.

And:

If you are using old Headless functionality you should now migrate to chrome-headless-shell (to retain old Headless functionality) or to the new Headless mode, which continues to be provided by the Chrome binary.

While new headless mode is suitable for full CI testing, the old headless mode is significantly faster, making it a much better fit for iterative TDD testing when browser interactions are under test.

Feature Request

Selenium Manager should either:

  • fetch both binaries when chrome is specified

or

  • provide support for chrome-headless-shell as a standalone browser option

In either case, it seems likely that Selenium implementations will also need to adjust to handle the separate binaries (perhaps by noticing --headless=old and switching binaries?), but that seems like a secondary task dependent on SM supporting autodownloads of both binaries.

Have you considered any alternatives or workarounds?

The current workaround I've come up with is to install the chrome-headless-shell binary myself, and specify that as the binary to use when running Selenium. eg.

browser_options = Selenium::WebDriver::Chrome::Options.new
browser_options.binary = '/some/path/to/binary/chrome-headless-shell'

# Using Capybara + Selenium, but the point applies regardless of testing engine
Capybara::Selenium::Driver.new(app, browser: :chrome_headless_shell, options: browser_options)

I've put together a rickety emulation of SM's autodownload behaviour that attempts to match the installed Chrome version, but makes no attempt to be cross-platform nor support most browsers.

This is obviously not as robust as Selenium Manager handling it properly, but it does work for now and avoids a hardcoded local path and (some) manual updates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-needs-triagingA Selenium member will evaluate this soon!B-managerSelenium ManagerI-enhancementSomething could be better

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions