fix(install): skip browser download when system chromium exists#25317
Merged
teknium1 merged 1 commit intoMay 14, 2026
Merged
Conversation
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Fixes a Linux installer failure mode where Hermes can get stuck during Playwright's managed Chromium install even though a usable system Chrome/Chromium is already present.
On unsupported Arch-family distributions such as CachyOS, Playwright can download its Ubuntu fallback Chrome-for-Testing archive and then hang during the explicit
npx playwright install chromiumstep. Because that happens beforesetup_path, config template creation, and the setup wizard, the user is left with a partially installed Hermes checkout even though the core Python environment has already been created.This change makes browser setup best-effort instead of allowing the managed Playwright browser download to block the whole install. The installer now detects an existing system browser first, skips the Playwright download when one is found, and persists
AGENT_BROWSER_EXECUTABLE_PATHinto~/.hermes/.envso browser tools use that system binary. Remaining Playwright install paths are timeout-guarded.Related Issue
Fixes #
Support thread: CachyOS installer hangs after
Downloading Chrome for Testing ... 100%while/usr/bin/chromiumis already installed.Type of Change
Changes Made
scripts/install.shchromium, which is the common Arch/CachyOS command name.npx playwright install chromiumwhen a system browser is found.AGENT_BROWSER_EXECUTABLE_PATH=<system browser>into~/.hermes/.envunless the user already configured it.timeoutis available.tools/browser_tool.pychromiumon PATH as a valid local browser.tests/test_install_sh_browser_install.pytests/tools/test_browser_chromium_check.pychromiumon PATH.How to Test
/usr/bin/chromium, run the installer.~/.hermes/.envcontainsAGENT_BROWSER_EXECUTABLE_PATH=/usr/bin/chromium.pytest tests/tools/test_browser_chromium_check.py tests/test_install_sh_browser_install.py.scripts/run_tests.sh -n 3.Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings) — or N/Acli-config.yaml.exampleif I added/changed config keys — or N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — or N/AFor New Skills
N/A
Screenshots / Logs
Targeted checks before opening PR:
bash -n scripts/install.shpytest tests/tools/test_browser_chromium_check.py tests/test_install_sh_browser_install.pyResult:
13 passed in 2.54sFull suite attempt after opening PR:
scripts/run_tests.sh -n 3Result: failed,
47 failed, 22434 passed, 59 skipped, 231 warnings, 19 errors in 1083.46s (0:18:03).The full-suite failures are broad and appear outside this PR's installer/browser-detection test coverage. The named failures include LSP client lifecycle tests, cron/script timeout tests, config mutation tests, process/interrupt/zombie cleanup tests, and browser supervisor errors. Full log is available locally at
/tmp/hermes_full_suite_n3.logfrom the run machine.