|
|
||
|---|---|---|
| .. | ||
| ci | ||
| lib | ||
| tests | ||
| whatsapp-bridge | ||
| LIVETEST_README.md | ||
| README.md | ||
| __init__.py | ||
| analyze_livetest.py | ||
| benchmark_browser_eval.py | ||
| build_model_catalog.py | ||
| build_skills_index.py | ||
| check-windows-footguns.py | ||
| check_subprocess_stdin.py | ||
| contributor_audit.py | ||
| dev-sandbox.sh | ||
| discord-voice-doctor.py | ||
| docker_config_migrate.py | ||
| docker_rebootstrap_nous_session.py | ||
| ego_browser_form_smoke.sh | ||
| ego_browser_screenshot_smoke.sh | ||
| ego_browser_smoke_utils.py | ||
| hermes-gateway | ||
| install.cmd | ||
| install.ps1 | ||
| install.sh | ||
| install_psutil_android.py | ||
| keystroke_diagnostic.py | ||
| kill_modal.sh | ||
| lint_diff.py | ||
| profile-tui.py | ||
| release.py | ||
| run_tests.sh | ||
| run_tests_parallel.py | ||
| sample_and_compress.py | ||
| tool_search_livetest.py | ||
README.md
Smoke / helper scripts
This directory includes a few operator-facing smoke runners that exercise real tools instead of mocks.
ego-browser smoke runners
Form smoke
./scripts/ego_browser_form_smoke.sh
# or override the value
./scripts/ego_browser_form_smoke.sh SmokeValue42
What it does:
- creates a tiny local form page
- serves it over
http.server - opens it with
ego-browser - fills the text field
- reads the field value and status text back from the page
Expected output is JSON containing:
title: "Hermes Ego Browser Form Smoke"valuestatus- a local loopback
url
Screenshot smoke
./scripts/ego_browser_screenshot_smoke.sh
What it does:
- runs a real
hermes chatbrowser task againsthttps://www.google.com/ - verifies the run loads the
ego-browserskill - verifies it does not load the generic
software-development:screenshotskill - extracts the screenshot path from verbose output
- OCRs the saved screenshot and confirms expected page text is present
Expected output is JSON containing:
title: "Google"urlbeginning withhttps://www.google.com/capture_method: "browser_vision-via-hermes-chat"screenshot_pathocr_text
If you want the script to keep a machine-readable copy of the JSON result for CI or artifact upload, set:
EGO_BROWSER_SCREENSHOT_RESULT_JSON=/tmp/ego-browser-screenshot-result.json \
./scripts/ego_browser_screenshot_smoke.sh
Opt-in pytest wrapper
There is an opt-in pytest wrapper at:
tests/tools/test_ego_browser_smoke_scripts.py
Run the form smoke test through pytest with:
RUN_EGO_BROWSER_SMOKE=1 python -m pytest tests/tools/test_ego_browser_smoke_scripts.py -q
That run executes the form smoke and skips the screenshot smoke unless you explicitly opt in:
RUN_EGO_BROWSER_SMOKE=1 RUN_EGO_BROWSER_SCREENSHOT_SMOKE=1 \
python -m pytest tests/tools/test_ego_browser_smoke_scripts.py -q
Why the extra flag?
- the screenshot smoke shells into a full
hermes chatsession - that path is slower and more environment-sensitive than the direct form smoke
- we keep it opt-in so normal targeted runs stay stable and low-noise
Manual CI workflow
There is also an opt-in GitHub Actions workflow:
.github/workflows/ego-browser-smoke.yml
It is intentionally workflow_dispatch only and expects a self-hosted macOS runner
that already has:
ego-browsertesseract- Python 3 available for
uv sync
Use it when you want a real CI-hosted smoke pass without forcing browser-smoke noise into the default PR lanes. When screenshot smoke is enabled there, the workflow also uploads the captured screenshot plus the parsed JSON result as an artifact, and writes the screenshot path / OCR summary into the Actions job summary.