Glossar · UI-Automatisierung
Headless Browser
Englisch: Headless browser
Auch genannt: Headless Browsers, Headless-Modus, Headless Mode, Headless Chrome
Definition
Eine echte Browser-Engine, die ohne sichtbares Fenster läuft und genutzt wird, um UI-Tests auf CI-Servern und anderen Maschinen ohne Bildschirm auszuführen.
Ein Headless Browser lädt Seiten, führt JavaScript aus, baut das DOM auf und verarbeitet Netzwerk-Requests genau wie ein normaler Browser, zeichnet aber nichts auf einen Bildschirm. Tests steuern ihn über dasselbe Automatisierungsprotokoll wie einen Browser mit Fenster. Da er keinen Display-Server braucht, ist er der Standardweg, UI-Tests in CI-Containern und auf Build-Agents auszuführen.
Beispiel
Playwright läuft standardmäßig headless. Ein sichtbares Fenster schalten Sie beim Debuggen gezielt ein:
npx playwright test # headless
npx playwright test --headed # show the browser
npx playwright test --ui # interactive UI mode
In Selenium 4 fordern Sie den Headless-Modus über die Browser-Optionen an:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless=new");
WebDriver driver = new ChromeDriver(options);
FirefoxOptions options = new FirefoxOptions();
options.addArguments("-headless");
WebDriver driver = new FirefoxDriver(options);
Warum das wichtig ist
- Er läuft überall. Build-Agents und Docker-Container haben meist kein Display, sodass Läufe mit Fenster einen virtuellen Framebuffer bräuchten.
- Er braucht weniger Ressourcen als ein Browser mit Fenster, sodass Sie auf derselben Maschine mehr Worker parallel betreiben können.
- Er ist ein echter Browser. Moderne Headless-Versionen von Chrome und Firefox nutzen dieselbe Rendering-Engine wie ihre Varianten mit Fenster, weshalb headless geschriebene Tests sich mit Fenster in der Regel gleich verhalten.
Häufige Stolperfallen
- Unterschiedliche Viewports. Ein Headless Browser startet unter Umständen mit einer anderen Standardfenstergröße als Ihr Desktop-Browser. Setzen Sie den Viewport explizit, damit sich responsive Layouts einheitlich verhalten.
- „Mit Fenster läuft’s, headless nicht.“ Meist liegt das am Timing, nicht am Headless-Modus selbst: Der Headless-Lauf ist schneller oder langsamer und legt einen fehlenden Wait offen. Zeichnen Sie bei Fehlschlägen einen Trace oder Screenshot auf, statt die CI auf Läufe mit Fenster umzustellen.
- Blind debuggen. Aktivieren Sie Screenshots, Videos oder Traces für fehlgeschlagene Tests, damit Sie sehen, was der Headless Browser gesehen hat.
- Headless mit „kein Browser“ verwechseln. Tools, die nur HTML abrufen, ohne JavaScript auszuführen, sind keine Headless Browser und können keine moderne Single-Page-App testen.