3 Commits
Author SHA1 Message Date
alexpolo1andClaude Opus 5 69edbf8998 test: never post to the real Discord webhook during pytest
Bot paths under test call _save_error_screenshot -> messenger.send_error, and
Config reads the real webhook from the repo's .env. On 2026-09-15 a test run
sent a real 'maintenance failed - Buy consumables failed (vendor not found)'
alert while the live bot was completing every game. conftest now blanks the
message hooks and disables SyncWebhook/generic_api posting.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-15 18:31:38 +02:00
alexpolo1andClaude Opus 5 b0d8fdf028 test: block real mouse/keyboard input and window moves during pytest
Many tests run real bot code paths with only the screen faked; those paths end in
win_input's SendInput/SetCursorPos, which act on the focused window. Running the
suite while the bot played on 2026-09-15 sent test clicks and keys into D2R (a
game started with no bot input, the inventory opened, the character got
stranded), and the bot was blamed for getting stuck.

conftest now wraps win_input.user32 so SendInput/SetCursorPos/keybd_event/
mouse_event report success and do nothing, and no-ops utils.misc window
SetWindowPos/SetForegroundWindow/ShowWindow. Verified: a test calling
win_input.mouse_move leaves the real cursor in place; with
BOTTY_TESTS_ALLOW_REAL_INPUT=1 the same test moves it.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-15 18:00:58 +02:00
alexpolo1andClaude Sonnet 4.6 3d11947bf2 ocr: bundle Tesseract into release for click-and-run OCR
Make the standalone exe work with OCR out of the box — no separate
Tesseract install, no tesserocr DLL hell. Verified end-to-end: built the
exe, ran it frozen with the system Tesseract blinded, confirmed it
resolves the bundled binary and reads text ("CHAM RUNE").

- ocr.py: resolve an _APP_BASE (exe dir when frozen, else cwd) and prefer
  a bundled <exe_dir>/tesseract/tesseract.exe over PATH / Program Files.
  Resolve assets/tessdata to an absolute path so OCR no longer depends on
  the current working dir. Applies to both the tesserocr and pytesseract
  paths.
- build.py: copy a portable Tesseract (exe + DLLs) from TESSERACT_DIR
  (default C:\Program Files\Tesseract-OCR) into <release>/tesseract/. Our
  trained models in assets/tessdata are used via --tessdata-dir, so their
  tessdata is skipped. Warns (non-fatal) if Tesseract isn't present.
- ci.yml: choco install tesseract before the build so the bundle is
  reproducible on the runner; verify it landed in the release dir.
- test/conftest.py: apply the SSL cert-store workaround so pytest can be
  collected on Windows boxes with a corrupted cert store (no-op on CI).

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-06-20 10:49:25 +02:00