Dieser Artikel ist noch nicht veröffentlicht und für Suchmaschinen nicht sichtbar.
Visuelles Testen in GitLab CI/CD: Artifacts und Environments für perfekte Regressionserkennung

Visuelles Testen in GitLab CI/CD: Artifacts und Environments für perfekte Regressionserkennung

Visuelles Testen in GitLab CI/CD ist die Integration eines automatisierten Schritts zur Aufnahme und zum Vergleich von Screenshots innerhalb einer in .gitlab-ci.yml definierten Pipeline, die Artifacts zur Speicherung von Aufnahmen und Environments zur Kontextualisierung der Ergebnisse nutzt, um jede visuelle Regression zu erkennen, bevor ein Merge Request akzeptiert wird.

GitLab CI/CD ist der direkte Konkurrent von GitHub Actions. Wenn Sie sich fuer GitLab in Ihrem Stack entschieden haben — und Millionen von Teams haben das getan — verfuegen Sie ueber ein leistungsfaehiges, nativ integriertes CI/CD-System, das tief mit Ihrem Code-Manager verbunden ist. Und dieses System besitzt Funktionen, die es besonders geeignet fuer visuelles Testen machen.

Dennoch: Wie viele .gitlab-ci.yml-Dateien enthalten einen visuellen Verifikationsschritt? Sehr wenige. Die Mehrheit beschraenkt sich auf Build, funktionale Codetests und Deployment. Das Erscheinungsbild der Anwendung — das, was der Benutzer tatsaechlich sieht — wird nur manuell ueberprueft, wenn ueberhaupt.

Unsere Position: GitLab CI ist dank seiner Artifacts und Environments perfekt fuer visuelles Testen geeignet. Diese beiden oft untergenutzten Funktionen bieten eine ideale Infrastruktur zum Speichern von Screenshots, Vergleichen von Ergebnissen zwischen Branches und Kontextualisieren von Regressionen. Wenn Sie GitLab nutzen und kein visuelles Testen durchfuehren, lassen Sie das Potenzial Ihrer Pipeline brach liegen.

Inhaltsverzeichnis

  • Was GitLab CI spezifisch fuer visuelles Testen bietet
  • Das Problem visuell blinder Pipelines
  • Visuelles Testen in .gitlab-ci.yml konfigurieren
  • Artifacts fuer Screenshots nutzen
  • Environments als Vergleichskontext
  • Integration mit Merge Requests
  • No-Code-Ansatz: Die Konfiguration radikal vereinfachen
  • Haeufige Fallen und Loesungen
  • Haeufig gestellte Fragen
  • Fazit

Was GitLab CI spezifisch fuer visuelles Testen bietet

GitLab CI besitzt Funktionen, die seine Konkurrenten nicht bieten — oder nicht so gut. Fuer visuelles Testen sind drei davon besonders wertvoll.

Artifacts: Ihre Screenshot-Bibliothek

Artifacts in GitLab CI ermoeglichen das Speichern von Dateien, die von einem Job erzeugt werden, und deren Zugaenglichkeit nach der Pipeline-Ausfuehrung. Fuer visuelles Testen ist das genau das, was Sie brauchen.

Jede Pipeline-Ausfuehrung erzeugt Screenshots. Diese Aufnahmen muessen aus zwei Gruenden aufbewahrt werden. Erstens, damit das Team sie einsehen kann, wenn ein Test fehlschlaegt. Zweitens, um als Referenzen fuer kuenftige Vergleiche zu dienen.

GitLab-Artifacts bieten eine feingranulare Aufbewahrungsverwaltung. Sie koennen Screenshots der letzten sieben Tage aufbewahren oder dreissig Tage fuer den Hauptbranch. Sie koennen sie direkt aus der GitLab-Oberflaeche herunterladen oder ueber den integrierten Artifact-Browser durchsuchen.

Environments: Ihre Aufnahmen kontextualisieren

GitLab Environments ermoeglichen es, ein Deployment einem benannten Kontext zuzuordnen (Staging, Production, review/feature-xyz). Fuer visuelles Testen bedeutet das, dass jede Aufnahme an ein spezifisches Environment gebunden ist.

Wenn Sie einen Feature-Branch in ein Review-Environment deployen, sind die aufgenommenen Screenshots an dieses Environment gebunden. Sie koennen die Aufnahmen des Review-Environments mit denen des Staging- oder Produktions-Environments vergleichen. Das ist ein Grad an Nachvollziehbarkeit, den nur wenige CI/CD-Systeme nativ bieten.

Der integrierte Artifact-Browser

GitLab bietet einen Datei-Browser direkt in der Weboberflaeche zum Durchsuchen von Artifacts. Fuer visuelles Testen bedeutet das, dass Ihr Team Screenshots, visuelle Diffs und Vergleichsberichte einsehen kann, ohne GitLab zu verlassen. Kein Drittanbieter-Tool zu oeffnen. Kein externer Link zu folgen. Alles im selben Oekosystem.

Das Problem visuell blinder Pipelines

Betrachten wir die Fakten. Eine typische GitLab-CI-Pipeline fuehrt folgende Schritte aus: Lint, Unit-Test, Integrationstest, Build, Deploy. Fuenf Schritte. Null visuelle Verifikation.

Diese Pipeline kann Ihnen sagen, ob eine Funktion das falsche Ergebnis zurueckgibt. Sie kann Ihnen nicht sagen, ob die Haelfte Ihrer Startseite von einer falsch positionierten Komponente verdeckt wird.

Folgendes passiert in der realen Welt. Ein Entwickler aendert eine gemeinsam genutzte CSS-Datei. Die Aenderung ist minimal: eine Margen-Anpassung an einer Komponente. Die Pipeline besteht. Der Merge Request wird von einem Reviewer genehmigt, der den Diff gelesen hat, ohne das Rendering zu visualisieren. Der Merge wird durchgefuehrt.

Drei Tage spaeter meldet ein Kunde, dass die Preisseite auf dem Mobilgeraet unlesbar ist. Die geaenderte Marge hat einen Kaskadeneffekt auf ein Flexbox-Layout ausgeloest, das von sechs anderen Seiten verwendet wird. Niemand hat es gesehen, weil niemand hingeschaut hat — weder der Mensch noch die Pipeline.

Automatisiertes visuelles Testen ist die systemische Loesung fuer dieses Problem. Keine aufmerksamere Code Review. Kein gruendlicheres manuelles QA. Ein automatisierter Test in der Pipeline, der Bilder vorher/nachher vergleicht und jeden Unterschied meldet.

Visuelles Testen in .gitlab-ci.yml konfigurieren

Die Konfiguration einer visuellen Test-Pipeline in GitLab CI folgt einer klar definierten Schrittlogik. Hier ist die konzeptionelle Struktur Ihrer .gitlab-ci.yml-Datei.

Die Pipeline-Struktur

Ihre Pipeline muss folgende Stages in dieser Reihenfolge enthalten.

Die Build-Stage. Sie kompiliert Ihre Anwendung und macht sie bereitstellungsfaehig. Das ist wahrscheinlich bereits in Ihrer Pipeline.

Die visuelle Test-Stage. Das ist die neue Stage. Sie startet einen lokalen Server, nimmt Screenshots auf, vergleicht sie mit den Referenzen und erstellt einen Bericht. Diese Stage muss nach dem Build ausgefuehrt werden, und ihre Ergebnisse muessen als Artifacts gespeichert werden.

Die Deploy-Stage. Sie wird nur ausgefuehrt, wenn alle Tests — einschliesslich des visuellen Tests — bestanden haben.

Abhaengigkeiten des visuellen Test-Jobs

Der visuelle Test-Job benoetigt einen Headless-Browser fuer die Screenshot-Aufnahme. In GitLab CI haben Sie zwei Optionen. Ein Docker-Image verwenden, das bereits Chromium enthaelt (wie die offiziellen Playwright-Images), oder Chromium im Job ueber before_script-Befehle installieren.

Das Docker-Image ist vorzuziehen. Es ist reproduzierbar, schnell (keine Installation bei jedem Run) und garantiert eine feste Browserversion.

Ergebnisspeicherung

Der visuelle Test-Job muss verschiedene Dateitypen als Artifacts erzeugen. Die waehrend dieses Runs aufgenommenen Screenshots. Die visuellen Diffs, die die erkannten Unterschiede zeigen. Einen HTML- oder JSON-Bericht, der die Ergebnisse zusammenfasst.

Konfigurieren Sie eine angemessene Aufbewahrungsrichtlinie. Screenshots des Hauptbranches sollten laenger aufbewahrt werden (sie dienen als Referenz). Screenshots von Feature-Branches koennen nur einige Tage aufbewahrt werden.

Die Blockierungsbedingung

Der visuelle Test-Job muss als blockierender Job konfiguriert sein. Wenn nicht genehmigte Unterschiede erkannt werden, muss die Pipeline fehlschlagen. Keine Warnung. Kein "Continue on Failure". Ein klares Scheitern, das den Merge verhindert.

Artifacts fuer Screenshots nutzen

GitLab-CI-Artifacts sind die Saeulen Ihrer visuellen Teststrategie. So nutzen Sie sie optimal.

Artifacts lesbar strukturieren

Organisieren Sie Ihre Screenshots in einer uebersichtlichen Verzeichnisstruktur innerhalb der Artifacts. Erstellen Sie einen Ordner pro getesteter Seite, der den Referenz-Screenshot, den aktuellen Screenshot und das Diff enthaelt. Ein HTML-Bericht im Stammverzeichnis ermoeglicht die Navigation zwischen den Ergebnissen.

Diese Struktur erleichtert die Einsicht durch Reviewer. Wenn ein Test fehlschlaegt, oeffnet der Reviewer den Artifact-Browser, navigiert zur betroffenen Seite und sieht sofort den Unterschied.

Artifacts als Referenzen verwenden

Artifacts des Hauptbranches koennen als Referenz fuer Vergleiche von Feature-Branches dienen. GitLab CI ermoeglicht das Herunterladen von Artifacts eines bestimmten Jobs auf einem bestimmten Branch ueber die API.

Konkret beginnt der visuelle Test-Job Ihres Feature-Branches damit, die Referenz-Screenshots aus den Artifacts der letzten erfolgreichen Pipeline auf dem Hauptbranch herunterzuladen. Er nimmt dann die Screenshots des Feature-Branches auf. Er vergleicht die beiden Aufnahmesaetze. Er speichert die Ergebnisse als Artifacts der aktuellen Pipeline.

Aufbewahrung intelligent verwalten

GitLab-Artifacts haben eine konfigurierbare Aufbewahrungsdauer. Fuer visuelles Testen funktioniert eine Zwei-Ebenen-Richtlinie gut. Artifacts des Hauptbranches werden 30 Tage (oder laenger) aufbewahrt. Sie dienen als stabile Referenz. Artifacts von Feature-Branches werden 7 Tage aufbewahrt, die Zeit, bis der Merge Request bearbeitet ist.

Environments als Vergleichskontext

GitLab Environments fuegen Ihrem visuellen Testen eine zusaetzliche Dimension hinzu. Sie ermoeglichen es, jeden Satz von Screenshots an einen Deployment-Kontext zu binden.

Review Apps als Testgelaende

Wenn Sie GitLab Review Apps verwenden (ein temporaeres Deployment fuer jeden Feature-Branch), verfuegen Sie ueber eine eindeutige URL pro Branch. Der visuelle Test kann Screenshots direkt auf dieser URL aufnehmen, was ein originalgetreueres Rendering bietet als ein lokaler Server im CI.

Der Vorteil ist doppelt. Das Rendering stammt aus einer realen Umgebung (kein Entwicklungsserver). Und die URL der Review App ist fuer das gesamte Team zugaenglich, was die manuelle Verifikation als Ergaenzung zum automatisierten Test erleichtert.

Zwischen Environments vergleichen

Environments ermoeglichen den Vergleich von Screenshots zwischen Kontexten. Sie koennen die Review App eines Feature-Branches mit dem Staging-Environment vergleichen. Oder Staging mit Produktion vergleichen, um visuelle Abweichungen zu erkennen.

Diese Faehigkeit zum Environment-uebergreifenden Vergleich ist ein grosser Vorteil von GitLab CI fuer visuelles Testen. Sie ermoeglicht es, nicht nur durch einen Branch eingefuehrte Regressionen zu erkennen, sondern auch zwischen Umgebungen angesammelte Abweichungen.

Integration mit Merge Requests

Visuelles Testen hat nur dann Wert, wenn seine Ergebnisse sichtbar und handlungsfaehig sind. Die Integration mit GitLab Merge Requests ist der ideale Kanal.

Merge-Request-Widgets

GitLab zeigt Pipeline-Ergebnisse direkt auf dem Merge Request an. Der Status des visuellen Test-Jobs erscheint in der Check-Liste. Ein Klick fuehrt zu den Job-Logs und Artifacts.

Automatische Kommentare

Konfigurieren Sie Ihre Pipeline so, dass sie einen automatischen Kommentar auf dem Merge Request postet, wenn visuelle Unterschiede erkannt werden. Dieser Kommentar sollte eine Zusammenfassung (Anzahl betroffener Seiten, Schweregrad der Aenderungen) und einen Link zum vollstaendigen Bericht in den Artifacts enthalten.

Genehmigung erwarteter Aenderungen

Wenn eine visuelle Aenderung beabsichtigt ist (ein Redesign, eine Farbaenderung), braucht es einen Mechanismus zur Genehmigung der Aenderung und Aktualisierung der Referenzen. In GitLab kann das ueber einen manuellen Job erfolgen, der per Button in der Pipeline ausgeloest wird. Der Entwickler oder QA prueft die Diffs, bestaetigt, dass sie erwartet sind, und loest die Aktualisierung der Referenzen aus.

No-Code-Ansatz: Die Konfiguration radikal vereinfachen

Alles Vorherige funktioniert, erfordert aber eine erhebliche Investition in Konfiguration und Wartung. Der No-Code-Ansatz reduziert diese Komplexitaet drastisch.

Mit einem Tool wie Delta-QA beschraenkt sich die Integration in GitLab CI darauf, einen Job hinzuzufuegen, der das Tool mit den Parametern Ihres Projekts aufruft. Das Tool verwaltet den Headless-Browser, die Aufnahme, den Vergleich, die Referenzverwaltung und das Reporting.

Sie muessen keine Docker-Images mit Chromium verwalten. Sie muessen keine Aufnahmeskripte schreiben. Sie muessen kein Vergleichssystem implementieren. Sie muessen keinen HTML-Bericht erstellen.

Der Hauptvorteil ist nicht die anfaengliche Einfachheit — es ist die langfristige Wartung. Eine handwerkliche visuelle Test-Pipeline erfordert staendige Wartung: Browser-Updates, Schwellenwert-Anpassungen, Korrektur von Aufnahmeskripten bei UI-Aenderungen. Ein No-Code-Tool absorbiert diese Komplexitaet.

Ihre .gitlab-ci.yml-Datei bleibt sauber. Ihre Pipeline bleibt schnell. Und Ihr Team kann sich auf das Wesentliche konzentrieren: Ergebnisse analysieren und entscheiden, ob die Aenderungen erwartet sind oder nicht.

Haeufige Fallen und Loesungen

Die Falle grosser Docker-Images

Docker-Images mit Headless-Browser sind schwer (oft ueber ein Gigabyte). Wenn Sie sie bei jedem Run herunterladen, fuegen Sie Ihrer Pipeline mehrere Minuten hinzu. Verwenden Sie eine private Docker Registry mit Caching oder vorinstallierte Images auf Ihren Shared Runnern.

Die Falle der Bildschirmaufloesung

GitLab-CI-Runner haben keinen physischen Bildschirm. Der Headless-Browser verwendet einen virtuellen Framebuffer. Die Aufloesung dieses Framebuffers muss Ihren Test-Viewports entsprechen. Wenn Sie in 1920x1080 aufnehmen, aber der Framebuffer auf 1024x768 konfiguriert ist, erhalten Sie abgeschnittene oder skalierte Screenshots.

Die Falle asynchroner Inhalte

Moderne Anwendungen laden Inhalte asynchron. Eine API, die in der Entwicklung 200 Millisekunden braucht, kann im CI 2000 benoetigen (anderes Netzwerk, geteilte Ressourcen). Warten Sie, bis alle Netzwerkaufrufe abgeschlossen sind und der Inhalt gerendert ist, bevor Sie aufnehmen.

Die Falle der Referenzverwaltung bei langen Branches

Wenn ein Feature-Branch mehrere Wochen dauert, koennen sich die Referenzen des Hauptbranches zwischenzeitlich weiterentwickelt haben. Beim Vergleich erkennen Sie Unterschiede, die von der Evolution von main stammen, nicht von Ihrem Branch. Die Loesung ist, Ihren Branch regelmaessig auf main zu rebasen oder bei jedem Run die aktuellsten Referenzen herunterzuladen.

Haeufig gestellte Fragen

Welches Docker-Image fuer visuelles Testen in GitLab CI verwenden?

Die offiziellen Playwright-Images (mcr.microsoft.com/playwright) sind eine exzellente Wahl. Sie enthalten Chromium, Firefox und WebKit mit allen notwendigen Systemabhaengigkeiten. Wenn Sie nur Chromium verwenden, sind leichtere Alpine-basierte Images mit Puppeteer verfuegbar. Fuer ein No-Code-Tool wie Delta-QA wird das Docker-Image bereitgestellt und fuer diesen Zweck optimiert.

Wie lange sollten Screenshot-Artifacts aufbewahrt werden?

Fuer den Hauptbranch bewahren Sie Artifacts mindestens 30 Tage auf. Sie dienen als Referenz fuer alle Vergleiche. Fuer Feature-Branches reichen in der Regel 7 Tage — die Zeit, bis der Merge Request bearbeitet und gemergt ist. Passen Sie an Ihren Entwicklungsrhythmus an. Ein Team mit langen Zyklen benoetigt eine laengere Aufbewahrung.

Funktioniert visuelles Testen mit den Shared Runnern von GitLab.com?

Ja, die Shared Runner von GitLab.com (SaaS) unterstuetzen visuelles Testen. Sie verwenden virtuelle Maschinen mit Docker, die einen Headless-Browser ausfuehren koennen. Allerdings kann die Performance je nach Auslastung der Shared Runner variieren. Wenn Stabilitaet und Geschwindigkeit kritisch sind, bieten dedizierte oder selbst gehostete Runner bessere Kontrolle.

Wie geht man mit Renderunterschieden zwischen GitLab CI und dem Entwicklungsrechner um?

Renderunterschiede zwischen Ihrem lokalen Rechner und CI-Runnern sind unvermeidlich. Installierte Schriften, Browserversion und Framebuffer-Aufloesung unterscheiden sich. Die Regel ist einfach: Vergleichen Sie nie einen lokalen Screenshot mit einem CI-Screenshot. Referenzen muessen immer in derselben Umgebung generiert werden wie die Testaufnahmen. Wenn Ihre Referenzen im CI sind, finden Ihre Vergleiche im CI statt.

Kann man Screenshot-Aufnahmen in GitLab CI parallelisieren?

Absolut, und es ist empfohlen fuer Projekte mit vielen zu testenden Seiten. GitLab CI unterstuetzt Parallelisierung ueber das Schluesselwort parallel in Ihrer Konfiguration. Sie koennen Seiten auf mehrere gleichzeitig ausgefuehrte Jobs verteilen. Jeder Job nimmt eine Teilmenge von Seiten auf und speichert seine Screenshots als Artifacts. Ein finaler Job aggregiert die Ergebnisse. Dieser Ansatz teilt die Aufnahmezeit durch die Anzahl paralleler Jobs.

Funktioniert visuelles Testen in GitLab CI mit Monorepos?

Ja, aber das erfordert eine spezifische Konfiguration — wie bei jedem Monorepo. In einem Monorepo haben Sie wahrscheinlich mehrere Frontend-Anwendungen. Verwenden Sie die rules von GitLab CI, um visuelles Testen nur auszuloesen, wenn Dateien der betroffenen Anwendung geaendert werden. Jede Anwendung kann ihren eigenen Satz von Referenzen und ihren eigenen visuellen Test-Job haben. Artifacts muessen nach Anwendung organisiert werden, um Konflikte zu vermeiden.

Fazit

GitLab CI/CD besitzt native Funktionen — Artifacts, Environments, Review Apps, Artifact-Browser —, die es zu einer bemerkenswert geeigneten Plattform fuer visuelles Testen machen. Das ist kein Zufall. Es ist eine architektonische Konvergenz: Visuelles Testen muss Dateien speichern, Kontexte vergleichen und Ergebnisse zugaenglich machen. GitLab macht all das nativ.

Wenn Sie GitLab nutzen und Ihre Pipeline das Erscheinungsbild Ihrer Anwendung nicht ueberprueft, nutzen Sie Ihr Tool nicht vollstaendig. Sie haben die Infrastruktur. Es fehlt nur der Schritt.

Das Hinzufuegen von visuellem Testen zu Ihrer GitLab-CI-Pipeline ist kein digitales Transformationsprojekt. Es ist ein Schritt in einer .gitlab-ci.yml-Datei, ein Satz initialer Referenzen und ein Genehmigungsprozess fuer Aenderungen. Mit einem No-Code-Tool wie Delta-QA ist es noch einfacher: Eine Integration in wenigen Minuten, und jeder Merge Request ist automatisch gegen visuelle Regressionen geschuetzt.

Ihre Benutzer sehen Ihre Anwendung. Ihre Pipeline sollte sie auch sehen.

Delta-QA Kostenlos Testen


Weiterführende Lektüre