RobotMK: ImageHorizonLibrary headless

Hi @rolandg ,

das Problem ist, dass mit ImageHorizon tatsächliche Screenshots der X11-Oberfläche gemacht werden

Jupp, das ist korrekt. Es braucht ein Anzeigedevice, von der die Library (genauer gesagt: pyautogui/openCV) einen Abzug macht und dort das Referenzbild sucht.

und die Robot-eigene Screenshot-Funktion, die auch Bilder von headless Browsern machen kann, hier nicht funktioniert.

Falls Du diese hier meinst - auch die hängt von einer Anzeigekonsole ab.
Was Du meinst, sind vermutlich die Screenshot-Funktionen der Selenium/Browser(playwright)-Libraries. Das sind keine “echten” Screenshots, sondern nur ein gerendertes Bild des Browsers. Das ist nicht exakt das, was man sehen wurde, aber kommt dem sehr nahe.

Zu Deinem Problem: das lässt sich denke ich lösen:

  • Erstell eine Bakery-Regel und setze den Modus auf “external”. Damit wird Robotmk nicht mehr vom Agenten aus gestartet.
  • Backen, deployen/updaten
  • Das Starten von robotmk-runner.py ist jetzt Aufgabe eines cronjobs, den Du anlegen musst. Was der startet, kannst Du frei bestimmen, z.b. xvfb-run /usr/bin/python3 /usr/lib/checkmk-agent/bin/robotmk-runner.py.
  • Der Runner liest aus der robotmk.yml-Datei, welche Suites ausgeführt werden sollen und startet sie in der XVFB-Session.
  • Das robotmk.py-Plugin ist der “Kurzläufer” - der holt nur die JSON-Files mit den Ergebnissen ab und liefert sie agenten-kompatibel aus.

Untested :slight_smile:

Ich hoffe, das hilft!
vg
Simon

2 Likes