Selenium verantwortet häufig bereits wertvolle End-to-End- und Cross-Browser-Abläufe. Ein Screenshot am richtigen Punkt ergänzt visuelle Nachweise, ohne funktionale Assertions zu ersetzen. Schwierig ist nicht der Aufruf der Screenshot-Methode. Derselbe Seitenzustand muss lokal, auf Grid-Knoten und in CI reproduzierbar sein, danach braucht ein Mensch genügend Belege für Freigabe oder Ablehnung.
Dieser Leitfaden verwendet eine Bestellübersicht als Beispiel. Er behandelt explizite Waits, Browser-Fähigkeiten, Baseline-Namen, Vergleichsgrenzen und Artefakte. Außerdem trennt er Screenshots, die in die Selenium-Suite gehören, von produktiven Seiten, die sich planmäßig in RenderLog leichter gemeinsam prüfen lassen.
Ergänzen Sie visuelle Assertions erst bei bekanntem Funktionszustand
Führen Sie den Checkout in einen benannten Zustand und prüfen Sie danach die entscheidenden Angaben: Produkt, Menge, Gesamtbetrag und aktive Kaufaktion. Der Screenshot dokumentiert einen Zustand, den der funktionale Test bereits erkannt hat. Scheitert die Navigation oder erscheint die Übersicht nicht, melden Sie diese Ursache direkt. Der Vergleich einer halb geladenen Seite erzeugt einen auffälligen Diff, verdeckt aber den nützlicheren Fehler.
Wählen Sie den Bildausschnitt nach Risiko. Für eine stabile Zusammenfassung genügt oft ein Elementbild, das Navigation und Support-Widget ausschließt. Eine Fensteraufnahme passt, wenn das Verhältnis von Formular, Zusammenfassung und Schaltfläche zählt. Das Zusammensetzen einer ganzen Seite kann eigene Abweichungen erzeugen und sollte nur eingesetzt werden, wenn der Aufbau unterhalb des sichtbaren Bereichs wirklich Teil der Aussage ist.
- Prüfen Sie den Geschäftszustand vor der Aufnahme.
- Nutzen Sie Elementbilder, wenn andere Seitenbereiche nur Rauschen erzeugen.
- Nutzen Sie Fensterbilder, wenn die Komposition geprüft wird.
- Melden Sie Navigations- und Bereitschaftsfehler getrennt von visuellen Differenzen.
Ersetzen Sie feste Pausen durch aussagekräftige explizite Waits
Die Selenium-Dokumentation beschreibt Timing-Rennen als wichtige Ursache instabiler Tests. Warten Sie auf die sichtbare Übersicht, das Verschwinden des Ladeindikators und den erwarteten Text oder Zustand einer Schaltfläche. Eine feste Pause von zwei Sekunden ist auf schnellen Läufen unnötig lang und auf ausgelasteten Grids zu kurz. Ein explizites Wait scheitert mit einer verständlichen Bedingung.
Kombinieren Sie keine großen impliziten mit expliziten Wartezeiten. Ihr Zusammenspiel kann unerwartete Laufzeiten erzeugen und die Diagnose erschweren. Halten Sie die Bereitschaftsbedingung beim Page Object oder Ablauf, der den Zustand versteht. Ein visueller Helfer sollte ein bereits bereites Element oder einen bereiten Driver erhalten, statt selbst zu schlafen, zu scrollen und den Abschluss zu erraten.
- Warten Sie auf Sichtbarkeit, Text, Steuerzustand oder das Ende des Ladens.
- Platzieren Sie Bedingungen nahe bei dem Seitenverhalten, das sie beschreiben.
- Vermeiden Sie die Mischung impliziter und expliziter Waits.
- Stoppen Sie vor dem Vergleich, wenn der Zustand nicht bereit ist.
Fixieren Sie Browser-Fähigkeiten und Rendering-Eingaben
Erfassen Sie Browsername und Version, Fenstergröße, Geräteskalierung soweit verfügbar, Betriebssystemabbild, Sprache, Zeitzone, Farbschema und installierte Fonts. Ein Remote-Grid kann zwei Läufe an Knoten mit unterschiedlichen Fontpaketen oder Anzeigeeinstellungen senden. Das sind verschiedene Rendering-Umgebungen, selbst wenn der Testname gleich ist, und sie sollten keine unqualifizierte gemeinsame Baseline verwenden.
Bilden Sie Baseline-Pfade aus visuellem Zustand und Umgebung statt aus einer beliebigen Nummer. Nehmen Sie etwa Bestellübersicht, Chrome, Desktop-Fenster und Sprache auf. Fixieren Sie Testdaten, sofern sie nicht geprüft werden, und deaktivieren Sie Animationen über Produkt- oder Browsereinstellungen. Für echte Cross-Browser-Abdeckung geben Sie pro Browser eine Baseline frei, statt Firefox auf Chrome-Pixel zu zwingen.
- Versionieren Sie Baselines nach Browser und relevanter Fenstergröße.
- Nutzen Sie einheitliche Fonts und Runner-Abbilder.
- Setzen Sie Sprache, Zeitzone und Thema explizit.
- Verwenden Sie nicht ein erwartetes Bild für unterschiedlich rendernde Browser.
Trennen Sie Aufnahme, Vergleich und Freigabe
WebDriver liefert Bildbytes. Eine Bibliothek kann sie mit einer gespeicherten Datei vergleichen, ein gehosteter Dienst kann Baseline-Verwaltung und Prüfung ergänzen. Halten Sie diese Ebenen in der Implementierung sichtbar. Ein kleiner Aufnahmehelfer darf nicht zugleich entscheiden, dass ein veränderter Produktzustand akzeptabel ist. Diese Entscheidung gehört zu einem Prüfer, Pull Request oder klaren Freigabeverfahren.
Wählen Sie die Vergleichsmethode für den Defekt, den Sie erkennen müssen. Pixelvergleich ist empfindlich und transparent, zeigt aber Rendering-Rauschen. Wahrnehmungsbasierte Verfahren können kleine technische Unterschiede tolerieren, brauchen dennoch geprüfte Beispiele und dokumentierte Grenzen. Bewahren Sie unabhängig davon Ausgangsbilder und Diff auf. Ein einzelner Wert ohne sichtbaren Nachweis reicht für eine Freigabeentscheidung nicht aus.
- Selenium stellt den kontrollierten Zustand her und nimmt ihn auf.
- Eine Vergleichsebene erzeugt messbare Nachweise.
- Eine benannte Person oder Regel gibt neue Baselines frei.
- Bewahren Sie Originalbilder auch bei einem numerischen Vergleichswert auf.
Planen Sie Artefakte für ein verteiltes Browser-Grid
Ein fehlgeschlagener Grid-Job sollte Baseline, aktuelle Aufnahme, Diff, Browser-Fähigkeiten, URL, Testprotokoll und relevante Konsolen- oder Netzwerkdaten hochladen. Nutzen Sie kollisionsfreie Pfade, weil parallele Browser denselben benannten Zustand aufnehmen können. Das Ergebnis muss nach dem Ende der Remote-Sitzung verfügbar bleiben. Ein Bild, das nur auf dem Grid-Knoten liegt, ist praktisch verloren.
Trennen Sie Infrastrukturfehler von abgeschlossenen Vergleichen. Ein getrennter Knoten, veraltetes Element oder Timeout ist keine visuelle Regression. Eine fertige Aufnahme mit geänderter Bestellübersicht kann eine sein. Erfassen Sie Kategorien getrennt, damit das Team zwischen Zuverlässigkeitsarbeit und Produktprüfung unterscheiden kann. Blinde Wiederholungen visueller Fehler können unstete Nachweise beseitigen und die Suite gesünder erscheinen lassen, als sie ist.
- Laden Sie Artefakte vor dem Ende der Remote-Sitzung hoch.
- Fügen Sie Browser-Fähigkeiten und Zustandsnamen zu Metadaten hinzu.
- Verwenden Sie eindeutige Pfade für parallele Worker.
- Machen Sie Grid- und Bereitschaftsfehler nicht zu Baseline-Updates.
Nutzen Sie RenderLog, wenn die Seite selbst geprüft werden soll
Selenium bleibt der richtige Besitzer eines privaten Checkouts mit Anmeldung, vorbereiteten Daten und Funktionsprüfungen. Eine öffentliche Partner-, Preis- oder Dokumentationsseite braucht vielleicht nur wiederholte Aufnahmen, Verlauf und einen Prüfer außerhalb des Testteams. RenderLog speichert die URL, führt den Check nach Zeitplan oder API-Aufruf aus und zeigt Baseline, aktuelles Ergebnis und Diff gemeinsam.
Teilen Sie Arbeit nach Ergebnis, nicht nach Werkzeugvorliebe. Behalten Sie release-blockierende Benutzerwege in Selenium. Verschieben Sie die Produktionsüberwachung in eine gemeinsame Prüffläche, wenn sie unabhängig von Repository-Änderungen weiterlaufen muss. Nach einem Deployment kann ein gespeicherter RenderLog-Lauf gestartet werden, ohne die Vorabdeckung aufzugeben. Jeder Check braucht einen benannten Besitzer und eine festgelegte Reaktion auf Änderungen.
- Behalten Sie authentifizierte und datenreiche Release-Abläufe in Selenium.
- Prüfen Sie öffentliche Seiten mit Änderungen außerhalb von Releases planmäßig.
- Starten Sie bei Bedarf einen gespeicherten RenderLog-Lauf nach dem Deployment.
- Vermeiden Sie doppelte Checks mit gleicher Zuständigkeit und Handlung.
Selenium-Bibliothek, Screenshot-API oder RenderLog?
Die wichtige Grenze ist die Zuständigkeit für Zustand und Prüfung. Selenium ist stark, wenn das Bild zu einem Browserablauf gehört; eine gemeinsame Oberfläche, wenn die Seite selbst laufend geprüft wird.
| Entscheidung | Selenium-Vergleich | Screenshot-API | RenderLog |
|---|---|---|---|
| Beste Eignung | Bestehender Browserablauf oder Grid-Suite | Programmgesteuerte Aufnahme ohne Prüfung | Gespeicherte Checks produktiver Seiten und Verlauf |
| Zustandskontrolle | WebDriver-Ablauf, Fixtures und Page Objects | Anfrageoptionen und Orchestrierung des Aufrufers | Szenarien, Zeitpläne und API-Läufe |
| Vergleich | Bibliothek oder externer visueller Dienst | Implementiert der Aufrufer | Baseline, aktuelle Aufnahme und Diff in einem Ergebnis |
| Typischer Besitzer | Testautomatisierung und Entwicklung | Aufrufende Anwendung | Qualität, Produkt, Betrieb, Agentur oder Kunde |
Minimaler Selenium-Ablauf für visuelle Nachweise
Die Beispiele halten explizite Bereitschaft, Aufnahme, Vergleich und optionale gemeinsame Überwachung als getrennte Schritte sichtbar. Wählen Sie Bildbibliothek und Speicher passend zu Sprache und CI-Umgebung.
tests/pricing-visual.mjs
import { writeFile } from "node:fs/promises";
import { Builder, By, until } from "selenium-webdriver";
const driver = await new Builder().forBrowser("chrome").build();
try {
await driver.manage().window().setRect({ width: 1366, height: 900 });
await driver.get("https://example.com/pricing");
const heading = await driver.findElement(By.css("h1"));
await driver.wait(until.elementTextIs(heading, "Pricing"), 10_000);
const image = await driver.takeScreenshot();
await writeFile("artifacts/pricing-current.png", image, "base64");
} finally {
await driver.quit();
}Comparison boundary
const result = await comparePngFiles({
baseline: "baselines/pricing-chrome-1366.png",
current: "artifacts/pricing-current.png",
diff: "artifacts/pricing-diff.png"
});
if (result.changedPixelRatio > 0.001) {
throw new Error("Visual difference needs review");
}Saved-page handoff
curl -X POST https://renderlog.com/api/check-suites/suite_01J/runs \
-H "Authorization: Bearer rl_live_xxx" \
-H "Content-Type: application/json" \
-d '{"format":"png","labels":{"source":"selenium","commit":"8f4a7f2"}}'Primärquellen dieses Leitfadens
Nutzen Sie die Selenium-Dokumentation für aktuelles WebDriver-Verhalten und Browseroptionen. Hier stehen reproduzierbarer Zustand, diagnostizierbare Artefakte und Prüfverantwortung im Mittelpunkt.
Fahren Sie mit einem konkreten Ablauf fort
Leitfaden zu visuellen Regressionstests
Wählen Sie reproduzierbare Zustände, Grenzwerte und Baseline-Verantwortung.
Visuelle Tests mit Cypress
Sehen Sie dieselben Entscheidungen in einem Cypress-Ablauf.
Visuelle Tests mit Playwright
Nutzen Sie integrierte Bild-Assertions und stabile CI-Artefakte.
Website-Screenshot-API
Erstellen Sie sofortige oder gespeicherte Aufnahmen und laden Sie Artefakte.
Werkzeuge für visuelle Regression vergleichen
Ordnen Sie Repository-, Komponenten- und gemeinsame Prüflösungen ein.
Geben Sie einer produktiven Seite einen klaren Besitzer
Lassen Sie Selenium Browserabläufe prüfen und speichern Sie eine öffentliche Seite in RenderLog, wenn ein anderer Prüfer geplante Aufnahmen, sichtbare Unterschiede und nachvollziehbare Baseline-Historie braucht.
RenderLog-Arbeitsbereich erstellen