Skip to content
Merged
Changes from 3 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
c2b68cd
Add Windows browser path checks to Chromium detection
SmartManoj Nov 4, 2025
7adba85
Merge branch 'main' into chromium
SmartManoj Nov 6, 2025
87938d3
format
SmartManoj Nov 6, 2025
87718f5
Refactor Windows Chromium path checks in impl.py
SmartManoj Nov 6, 2025
2dd4ab7
Merge branch 'main' into chromium
SmartManoj Nov 16, 2025
3614642
Merge branch 'main' into chromium
simonrosenberg Nov 19, 2025
2e0060a
Merge branch 'main' into chromium
SmartManoj Nov 20, 2025
aa05bf0
Refactor Windows browser path detection logic
SmartManoj Nov 20, 2025
3830639
Remove trailing whitespace in impl.py
SmartManoj Nov 20, 2025
0fa0e43
fix: allow detection of per-user Edge installations in LOCALAPPDATA
SmartManoj Nov 20, 2025
cb7086e
Rename browsers list to windows_browsers
SmartManoj Nov 21, 2025
c6c1ef8
Merge branch 'main' into chromium
SmartManoj Nov 21, 2025
b58f093
Merge branch 'main' into chromium
SmartManoj Dec 1, 2025
b5a56cd
Add Windows-specific browser executor implementation
SmartManoj Dec 3, 2025
3972616
lint
SmartManoj Dec 3, 2025
feb388b
Merge branch 'main' into chromium
SmartManoj Dec 3, 2025
881b20c
Apply suggestions from code review
SmartManoj Dec 3, 2025
c041799
Apply suggestions from code review
SmartManoj Dec 3, 2025
86054a9
Refactor Chromium detection logic for browser tool
SmartManoj Dec 3, 2025
544d515
Refactor Chromium detection tests to use executor classes
SmartManoj Dec 3, 2025
40d824d
Refactor tests to patch _ensure_chromium_available via class
SmartManoj Dec 3, 2025
b9d8b5b
Improve Windows Chrome detection logic
SmartManoj Dec 3, 2025
e952337
add new example to run on windows only
ryanhoangt Dec 3, 2025
93ac594
skip wait on fork PR
ryanhoangt Dec 3, 2025
fc2c451
exclude 30_windows.py example from doc check
ryanhoangt Dec 3, 2025
3b95b45
set visualizer to none
ryanhoangt Dec 3, 2025
54d93bc
update model name & base url
ryanhoangt Dec 3, 2025
1e3173e
Add standard browser installation path detection
SmartManoj Dec 3, 2025
352a97b
Rename 30_windows.py to 31_windows.py
SmartManoj Dec 3, 2025
dc29b77
Report LLM cost in Tom agent example
SmartManoj Dec 4, 2025
bc2c12e
Merge branch 'main' into chromium
SmartManoj Dec 4, 2025
696241f
Update Windows example filename references
SmartManoj Dec 4, 2025
d8a11d7
fix encoding error for windows example
ryanhoangt Dec 4, 2025
6ba981c
fix hidden dir
ryanhoangt Dec 4, 2025
058dc50
Rename 31_windows.py to 31_windows_browsing.py
openhands-agent Dec 4, 2025
8131ee2
Remove 31_windows_browsing.py example
openhands-agent Dec 4, 2025
93ee438
Apply suggestions from code review
SmartManoj Dec 5, 2025
601f75e
Update Chromium detection test method names and calls
SmartManoj Dec 5, 2025
a0d228e
Merge branch 'main' into chromium
SmartManoj Dec 5, 2025
36b18ce
revert workflow changes
ryanhoangt Dec 5, 2025
beb440c
fix workflow
ryanhoangt Dec 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 40 additions & 2 deletions openhands-tools/openhands/tools/browser_use/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,49 @@ def _check_chromium_available() -> str | None:
if path := shutil.which(binary):
return path

# Check common Windows installation paths
if os.name == "nt":
windows_chrome_paths = [
Path(os.environ.get("PROGRAMFILES", "C:\\Program Files"))
/ "Google"
/ "Chrome"
/ "Application"
/ "chrome.exe",
Path(os.environ.get("PROGRAMFILES(X86)", "C:\\Program Files (x86)"))
/ "Google"
/ "Chrome"
/ "Application"
/ "chrome.exe",
Path(os.environ.get("LOCALAPPDATA", ""))
/ "Google"
/ "Chrome"
/ "Application"
/ "chrome.exe",
Path(os.environ.get("PROGRAMFILES", "C:\\Program Files"))
/ "Microsoft"
/ "Edge"
/ "Application"
/ "msedge.exe",
Path(os.environ.get("PROGRAMFILES(X86)", "C:\\Program Files (x86)"))
/ "Microsoft"
/ "Edge"
/ "Application"
/ "msedge.exe",
]
for chrome_path in windows_chrome_paths:
if chrome_path.exists():
return str(chrome_path)

# Check Playwright-installed Chromium
playwright_cache_candidates = [
Path.home() / ".cache" / "ms-playwright",
Path.home() / "Library" / "Caches" / "ms-playwright",
Path.home() / ".cache" / "ms-playwright", # Linux
Path.home() / "Library" / "Caches" / "ms-playwright", # macOS
]
if os.name == "nt" and os.environ.get("LOCALAPPDATA"):
playwright_cache_candidates.append(
Path(os.environ["LOCALAPPDATA"]) / "ms-playwright"
)

for playwright_cache in playwright_cache_candidates:
if playwright_cache.exists():
chromium_dirs = list(playwright_cache.glob("chromium-*"))
Expand Down
Loading