Die Lücke zwischen HTTP 200 und echter Funktion
Moderne Web-Anwendungen bestehen aus drei Ebenen: dem reinen HTML-Dokument, das der Server ausliefert, dem JavaScript-Bundle, das die Interaktivität bringt, und den API-Calls, die im Hintergrund Daten laden. Uptime-Monitoring prüft die erste Ebene — und manchmal nicht einmal die. Typische Ausfälle, die durchrutschen:
- Kaputtes JavaScript-Bundle: Ein Deploy schreibt einen Syntaxfehler in das minifizierte JS. Die Seite lädt (HTTP 200), aber React / Svelte / Vue initialisieren nicht. Buttons reagieren nicht.
- Kaputter API-Call im Checkout: Das Frontend wird ausgeliefert, der Warenkorb-Submit hängt sich an
/api/cart/addmit HTTP 500 auf. Die Startseite merkt davon nichts. - Kaputter Selector nach Redesign: Der Entwickler hat
#add-to-cartinbutton[data-action=cart]umbenannt — und vergessen, dass ein Drittanbieter-Plugin den alten Selector erwartet. - Drittanbieter-Ausfall: Ein gehosteter Consent-Banner blockiert bei Ausfall das ganze UI mit einem Overlay. Uptime sagt „OK“, der Nutzer sieht nur den Lade-Spinner.
- WAF-Regel schlägt fehl: Eine neue Firewall-Regel blockt stille Form-Submissions — aber die GET-Anfrage auf
/läuft weiter.
Die durchschnittliche Checkout-Abbruchrate im deutschen E-Commerce liegt bei rund 70 % (Baymard Institute), ein nennenswerter Anteil davon geht auf technische Probleme zurück — von sichtbaren JavaScript-Fehlern bis zu unauffälligen Timeouts in den Backend-Calls. Ein Ausfall, der nicht bemerkt wird, läuft oft Stunden — bis ein Kunde sich per E-Mail oder Social Media beschwert.
Was Browser-Monitoring tatsächlich macht
Ein synthetischer Check fährt in einem echten, headless gesteuerten Chromium-Browser ein zuvor definiertes Szenario ab: Seite öffnen, Selector klicken, Feld ausfüllen, auf Element warten, Text oder URL prüfen. Wenn ein Schritt bricht, wird sofort ein Screenshot des Zustands im Moment des Fehlers angefertigt und ein Alert ausgelöst — inklusive Step-Nummer und Fehlermeldung.
Im Unterschied zu klassischem Uptime ist jeder Check ein vollwertiger Browser mit JavaScript, Cookies, localStorage, Netzwerk-Inspektion und DOM. Damit verhält sich der Check exakt wie ein Nutzer — bis auf das kleine Detail, dass er den eigenen Analytics-Tracker blockt (damit Ihre Reichweiten-Messungen nicht durch Test-Pageviews verfälscht werden) und einen eindeutigen User-Agent sendet, den Sie in Ihren Analytics filtern können.
Welche Flows zuerst überwachen?
Nicht jeder Klick der Site muss ein eigener Monitor werden. Der Mehrwert entsteht an den wenigen, umsatzkritischen Pfaden. Diese fünf sind für die meisten Websites der richtige Startpunkt:
Der teuerste Flow, wenn er bricht. Einmal pro 15 Minuten durchfahren — mit einem festen Test-Produkt im Warenkorb, das nie ausverkauft ist.
Dedizierter Monitoring-Account mit minimalen Rechten, der den Form-Submit, Redirect und eine Assertion auf .dashboard-greeting ausführt.
Dummy-E-Mail, die serverseitig ignoriert wird. Prüft, dass das Formular bis zur Bestätigungsseite durchläuft und die Danke-Seite erscheint.
Query mit bekanntem Ergebnis — prüft dass die Suche API nicht still 'Keine Ergebnisse' zurückgibt, obwohl Produkte da sind.
Klick auf 'Download' → prüft dass die Antwort Content-Type application/pdf hat und > 10 KB groß ist — fängt tote Download-Links.
Für mehrsprachige Sites — prüft dass der /en-Flow genauso funktioniert wie /de und nicht still in 404 endet.
Monitor in 3 Schritten aufsetzen
Weil jeder Klick manuell kommt, erscheint die Hemmschwelle oft höher als sie ist. In der Praxis braucht ein sauberer Flow-Monitor 5 bis 10 Schritte und ist in wenigen Minuten bereit. Die typische Reihenfolge:
- Zielseite aufrufen (
goto): Die Ausgangs-URL definieren. Der Runner wartet automatisch bisnetworkidle(Zustand, in dem keine Netzwerk-Requests mehr laufen). - Auf Element warten (
wait_for): Wichtigster Schritt bei Single-Page-Apps — sonst klickt der Runner bevor das DOM fertig hydriert ist. CSS-Selector auf ein Element wählen, das erst erscheint wenn die Seite bereit ist. - Felder füllen / Klicks (
fill,click): Nacheinander Login-E-Mail eintragen, Passwort eintragen, Submit klicken. Jede Aktion mit eigenem Selector. - Assertion setzen (
assert_text,assert_url): Nach dem Submit: die URL enthält/dashboardoder der TextWillkommensteht im Header. Ohne Assertion erkennt der Monitor einen Silent-Fail nicht. - Optional: Screenshot: Am Ende eines erfolgreichen Flows ein Schnappschuss zur Dokumentation — auch für den Audit-Trail.
CSS-Klassen von CSS-in-JS (z. B. .sc-abc123xyz) ändern sich bei jedem Build. Greifen Sie stattdessen auf data-test-id="cart-submit" oder feste IDs zurück. Sprechen Sie mit Ihrem Dev-Team — das ist ein 5-Minuten-Fix im Code und erspart Jahre an flaky Tests.
Intervalle, Alerts und Timings
Ein Browser-Run dauert typischerweise 2 bis 8 Sekunden und verbraucht Ressourcen. Gut gewählte Intervalle liegen zwischen 5 Minuten (kritische Checkouts im Tages-Betrieb) und 1 bis 2 Stunden (nicht-kritische Flows wie Newsletter-Anmeldung). Nachts auf Minimal-Frequenz zurückdrehen, wenn das Publikum sowieso schläft — die CO2-Ersparnis ist klein aber messbar.
Bei Fehlschlag feuert der Monitor einen Alert vom Typ browser_monitor_failed auf allen konfigurierten Kanälen — typisch E-Mail, Slack, Telegram oder Webhook. XICTRAQ dedupliziert 10 Minuten, damit ein Flaky-Selector nicht 100 Alerts pro Stunde verursacht. Ebenfalls hilfreich: die mehrstufige Eskalation — wenn nach 15 Minuten niemand den Alert mit dem Acknowledge-Link bestätigt, landet eine SMS bei der Bereitschaft.
Zusammenspiel mit Uptime- und API-Monitoring
Browser-Monitoring ersetzt Uptime und API-Monitoring nicht — es ergänzt sie. Die Aufgabenteilung:
| Check-Typ | Prüft | Frequenz typisch | Kosten |
|---|---|---|---|
| Uptime | HTTP-Erreichbarkeit der Startseite | 30 s – 5 min | Sehr günstig — ein GET-Request |
| API-Monitoring | Einzelne REST-Endpoints mit Assertions | 1 – 5 min | Günstig — ein HTTP-Call |
| Browser-Monitoring | Komplette Nutzer-Flows in echtem Chromium | 5 – 60 min | Höher — Chromium-Browser pro Run |
Die Kombination ist entscheidend: Uptime entdeckt Infrastruktur-Ausfälle in Sekunden, API-Monitoring erkennt kaputte Backend-Endpoints in Minuten, Browser-Monitoring findet kaputte User-Flows — einschließlich JavaScript-Fehler, kaputter Third-Party-Integrations und falscher Selector-Reaktionen — in einem Intervall, das zur tatsächlichen Nutzer-Frequenz passt.
Drei häufige Einwände
„Wir haben doch schon E2E-Tests in Playwright / Cypress in unserer CI.“ — Stimmt, aber diese laufen typischerweise bei jedem Pull-Request oder beim Nightly-Build, nicht alle 15 Minuten im Produktivsystem. Browser-Monitoring ist kein Ersatz für CI-Tests, sondern deren Pendant in der Produktion.
„Wir verfälschen unsere Analytics damit.“ — Genau dafür blockiert ein guter Runner den eigenen Tracker und sendet einen dedizierten User-Agent (XICTRAQ-BrowserMonitor/1.0), den Sie serverseitig und in Ihren Analytics-Tools filtern können. Bei cookielosem Analytics ist das besonders einfach — kein Session-Cookie muss ignoriert werden.
„Das Passwort liegt doch im Klartext in der Konfiguration.“ — Beim Monitoring-Setup lohnt sich ein dedizierter Test-Account mit minimalen Rechten statt eines produktiven Nutzers. Fill-Werte werden verschlüsselt in der Datenbank abgelegt und nur serverseitig für den Lauf entschlüsselt — zudem ist in einer Secrets-Vault-Lösung mit Variablen-Referenzen ({{secret.password}}) auf der Roadmap.
Wie unterscheidet sich Browser-Monitoring von Uptime-Monitoring?
Wie oft sollte ein Checkout-Monitor laufen?
Verfälscht das Monitoring unsere Analytics?
XICTRAQ-BrowserMonitor/1.0 serverseitig aus den Analytics raus, sodass Test-Pageviews und Klicks in Ihrer eigenen Reichweiten-Messung nicht sichtbar sind.Was passiert bei einem Flaky-Selector?
wait_for-Schritt auf ein stabiles Element löst das in der Regel. Zusätzlich dedupliziert XICTRAQ Alerts für 10 Minuten, sodass kein Alert-Sturm entsteht, wenn ein Selektor zwischendurch wieder greift.Kann ich Passwörter sicher im Monitor hinterlegen?
Ersetzt Browser-Monitoring unsere Playwright-CI-Tests?
Jetzt die kritischen Flows absichern
Ein klassisches Uptime-Dashboard, das durchgängig „100 %“ anzeigt, ist in der Praxis selten eine vollständige Wahrheit — es ist eine Aussage über ein einzelnes GET-Request. Für Checkout, Login und Kontaktformulare brauchen Sie eine zweite Ebene, die näher am echten Nutzer liegt. Mit einem Monitor pro kritischem Flow ist diese Lücke typischerweise an einem Nachmittag geschlossen — und die nächste Checkout-Panne erreicht das Monitoring, bevor der Support-Call kommt.
Dieser Artikel basiert auf Daten von: (Baymard Institute).