Inhaltsverzeichnis


Über den Autor

Zuletzt geÀndert:07.03.2025

EntwicklungBetriebSicherheitDokumentation


1👀

07.03.2025

CSS Seiteneffekte in der Gitlab CI/CD Pipeline findenVisual Regression mit Lost Pixel und Gitlab

Bei Überarbeitung von CSS Regeln gibt es oftmals Seiteneffekte die zu spĂ€t bemerkt werden. Um diese zu finden eigenen sich Visual Regression Tests. Lost Pixel ist ein beliebtes, einfaches und sehr gutes Tool um diese Art von Tests auszufĂŒhren. Lost Pixel kommt von Haus aus mit Github Actions Support - die Integration in Gitlab ist also nicht ganz offensichtlich. Wir zeigen wie man Lost Pixel und Gitlab CI/CD zusammen verwendet.

Visual Regression mit Lost Pixel und Gitlab

Was ist Visual Regression Testing?

Visual Regression Testing ermöglicht die Identifizierung von optischen VerĂ€nderungen basierend auf einer vorher festgelegten Basis. Diese VerĂ€nderungen beinhalten unter UmstĂ€nden Regressionen, welche somit schnell und kostengĂŒnstig erkannt werden. Moderne Anwendungen beinhalten oftmals eine Menge JavaScript und CSS. Änderungen an dem Quellcode, oder auch einfache Updates können zu Seiteneffekten fĂŒhren. Um diese aufzudecken, eignet sich Visual Regression Testing sehr gut.

Wie funktioniert Visual Regression Testing?

Das Vorgehen fĂŒr VRT-Tools ist immer Ă€hnlich:

  1. Es wird eine Menge von Komponenten oder Seiten definiert, welche zu prĂŒfen sind.
  2. Basierend darauf wird eine Baseline generiert.
  3. Bei Code Änderungen und Updates werden Screenshots gemacht und diese mit der Baseline verglichen.

Oftmals arbeiten Tools im Bereich des Testing fĂŒr visuelle Regressionen mit einem Threshold. Das bedeutet, die Abweichung von der Baseline hat eine Toleranz - absolut oder relativ. Beispielsweise könnte man festlegen, dass 10 Pixel oder 1% Abweichung von der Baseline akzeptiert werden.

Warum ist das so? - Das Rendering von Websites unterscheidet sich teilweise von Browser zu Browser sowie Betriebssystem zu Betriebssystem. Hier ist eine gewisse Toleranz ausgesprochen hilfreich.

Lost Pixel in der Praxis

Lost Pixel ist ein Tool der Firma nineLemon. Es ist cloud-basiert. Die einfachste Integration in eine CI Pipeline lĂ€sst sich mit Github Actions realisieren. Dabei ĂŒbernimmt die Lost Pixel Cloud Applikation die Verwaltung der Baseline. Die Screenshots der Baseline mĂŒssen nicht in das Repository eingecheckt werden.

Lost Pixel front page

(Quelle: https://lost-pixel.com)

Mit der Einbindung der bereitgestellten Github Action werden automatisch Screenshots der festgelegten Seiten/Komponenten erstellt und mit der Baseline verglichen. Die Lost Pixel Cloud Applikation bietet hier hervorragende Ansichten fĂŒr den Vorher-Nachher Vergleich.

Lost Pixel front page 2

(Quelle: https://lost-pixel.com links nachher, rechts vorher)

Über die simple BenutzeroberflĂ€che lassen sich Änderungen an der Baseline akzeptieren oder ablehnen. Bei Ablehnung wird der entsprechende Pull Request auf Github als “fehlgeschlagen” markiert.

Lost Pixel mit Gitlab

Github Actions ist de facto die “first class citizen” Implementierung von Lost Pixel in CI Pipelines. In diesem Abschnitt möchten wir zeigen, wie wir Lost Pixel mit der Software Gitlab verwenden.

Erstellung der Baseline fĂŒr Visual Regression Testing

Zuerst wird die Basis erzeugt. HierfĂŒr muss die lostpixel.config.js angelegt werden:

module.exports = {
  pageShots: {
    pages: [
      { path: '/pattern-library/render-pattern/cms/blocks/patterns/text/text.html', name: 'text', threshold: 0.01 },
    ],
    breakpoints: [320, 640, 1024, 1200, 1920],
    baseUrl: 'http://localhost:8000',
  },
  waitBeforeScreenshot: 2000,
  waitForLastRequest: 5000,
  failOnDifference: true,
  shotConcurrency: 1,
  generateOnly: true,
}

Diese Konfiguration nutzt "Page Shots". Damit werden lediglich ganzseitige Screenshots von den entsprechenden URLs gemacht. Eine detaillierte Aufstellung der Einstellungen ist hier zu finden. Der Parameter breakpoints ermöglicht es, unterschiedliche Bildschirmauflösungen gleichzeitig zu prĂŒfen.

Zur Erzeugung und zum Vergleich der Baseline nutzen wir Docker Images, um Unterschiede durch Betriebssystem oder Browser zu minimieren. HierfĂŒr wird die Baseline folgendermaßen erzeugt:

docker run --rm -v $PWD:$PWD -e WORKSPACE=$PWD -e DOCKER=1 -e LOST_PIXEL_DISABLE_TELEMETRY=0 -e LOST_PIXEL_MODE=update --network="host" lostpixel/lost-pixel:v3.22.0

Damit wird die Baseline neu erzeugt und lokal abgelegt. Da die Lost Pixel Cloud Plattform nicht mit Gitlab nutzbar ist, mĂŒssen diese Dateien ins Git Repository eingecheckt werden.

Installation von Lost Pixel auf dem Gitlab Runner

Zuallererst muss sichergestellt werden, dass Lost Pixel CLI in der Pipeline verfĂŒgbar ist:

apt-get update
apt-get install -y nodejs npm curl
npm i -g lost-pixel
npx playwright@1.47.2 install --with-deps chromium

Playwright wird in genau der Version installiert, welche fĂŒr Lost Pixel benötigt wird.

Playwright ist ein modernes, von Microsoft entwickeltes End-to-End-Testframework, das fĂŒr das Testen von Webanwendungen genutzt wird. Es ermöglicht automatisierte UI-Tests in mehreren Browsern.

Visual Regression Testing in der CI Pipeline

Die AusfĂŒhrung des Vergleichs ist nun denkbar einfach. Wir starten unsere Applikation (in unserem Fall eine Django App) und fĂŒhren das Kommando zum Vergleich aus:

python /app/die/manage.py serve --static &
npx lost-pixel local

Wir stellen sicher, dass die Screenshots temporĂ€r verfĂŒgbar sind um Unterschiede einfach untersuchen zu können. So können fehlgeschlagene Jobs einfach untersucht werden:

# gitlab-ci.yaml
artifacts:
  paths:
    - .lostpixel/difference/*
    - .lostpixel/current/*
  expire_in: 1 week
  when: always

Anbei ein Auszug aus eine möglichen gitlab-ci.yaml. In diesem Fall fĂŒhren wir eine Django Applikationen mit einer temporĂ€r verfĂŒgbaren, lokalen Postgres Datenbank aus:

# gitlab-ci.yaml

stages:
  - lint
  - build
  - test
  - release
  - deploy

# [...]

visual_regression:
  stage: test
  image:
    name: ${TEST_IMAGE_NAME}
    docker:
      user: root
  services:
    - postgres:17-alpine
  before_script:
    - apt-get update
    - apt-get install -y nodejs npm curl
    - python die/manage.py migrate && npm i -g lost-pixel
    - npx playwright@1.47.2 install --with-deps chromium
  script:
    - python /app/die/manage.py serve --static &
    - npx lost-pixel local
  variables:
  # [...]
  artifacts:
    paths:
      - .lostpixel/difference/*
      - .lostpixel/current/*
    expire_in: 1 week
    when: always

Auswertung des Visual Regression Tests

Sollte der Job fehlschlagen lassen sich nun die Ergebnisse in der Seitenleiste von Gitlab einfach aufrufen:

Lost Pixel results

Mit einem Klick auf Durchsuchen kann die Ordnerstruktur der Artefakte durchsucht werden:

Lost Pixel folders

Blueshoe expert Michael SchilonkaMichael Schilonka LinkedIn

Wir können visuelle Regression Tests auch fĂŒr deine App einrichten.

Jetzt Kontakt aufnehmen

Welche alternativen Tools gibt es fĂŒr Visual Regression Testing?

Neben Lost Pixel, dem Tools welches wir bei Blueshoe vornehmlich fĂŒr Visual Regression Testing verwenden, gibt es auch einige Alternativen:

Cloud-basierte Tools

Open-Source & Selbst-gehostete Tools

  • BackstopJS – Headless Browser-basierte visuelle Regressionstests
  • Wraith – Von BBC entwickeltes Open-Source-Tool fĂŒr Screenshot-Vergleiche
  • Resemble.js – JavaScript-Bibliothek fĂŒr pixelgenaue Bildvergleiche
  • Pixelmatch – Leichtgewichtige Bildvergleichsbibliothek fĂŒr visuelle Regressio

Fazit

In der heutigen agilen Entwicklungswelt ist Visual Regression Testing ein entscheidender Bestandteil der QualitĂ€tssicherung. Es hilft, unbeabsichtigte UI-Änderungen frĂŒhzeitig zu erkennen und stellt sicher, dass neue Features oder Bugfixes keine bestehenden Designelemente zerstören.

Durch den Einsatz moderner Tools wie Lost Pixel können Teams visuelle Tests effizient in ihre CI/CD-Pipelines integrieren und so die Konsistenz und Benutzerfreundlichkeit ihrer Anwendungen bewahren. Besonders im Zeitalter von komplexen Webanwendungen und responsivem Design ist ein zuverlÀssiges visuelles Testing ein echter Gamechanger.

Letztendlich spart Visual Regression Testing nicht nur Zeit und Kosten fĂŒr manuelle UI-ÜberprĂŒfungen, sondern trĂ€gt auch dazu bei, ein perfektes Nutzererlebnis zu gewĂ€hrleisten – und das auf allen GerĂ€ten und Browsern. 🚀

HĂ€ufige Fragen

1. Was ist Lost Pixel und warum sollte ich es in GitLab nutzen?

Lost Pixel ist ein Open-Source-Tool fĂŒr visuelle Regressionstests. In GitLab-Pipelines hilft es, visuelle Unterschiede in der UI frĂŒhzeitig zu erkennen und Builds zu stoppen, wenn unerwartete Änderungen auftreten.

2. Wie kann ich verhindern, dass nicht-relevante Änderungen Tests fehlschlagen lassen?

  • Nutze --diff-threshold, um geringfĂŒgige Abweichungen zu ignorieren
  • Verwende excludeSelectors, um dynamische Elemente (z. B. Datumsangaben) auszuschließen
  • Stelle sicher, dass Screenshots unter identischen Bedingungen (Viewport, Theme) erstellt werden

3. Wie kann ich Lost Pixel mit GitLab Merge Requests kombinieren?

Lost Pixel kann so konfiguriert werden, dass es bei Merge Requests ein visuelles Diff generiert und als Kommentar im MR anzeigt. Nutze dazu eine GitLab CI/CD-Integration oder externe Bots.

4. Wie kann ich Lost Pixel so einrichten, dass nur manuell genehmigte Änderungen als neue Referenz gelten?

  • Erstelle eine dedizierte baseline-Branch fĂŒr Referenz-Screenshots
  • Nutze einen CI/CD-Job, der nur nach Review geĂ€nderte Screenshots in die baseline-Branch merged

5. Warum schlÀgt Lost Pixel in GitLab zufÀllig fehl?

  • Unstabile Screenshots entstehen oft durch zufĂ€llige UI-Elemente oder Animationen.
  • Nutze den --wait-Parameter, um sicherzustellen, dass alle UI-Elemente gerendert wurden.

Hast du noch Fragen oder eine Meinung? Mit deinem GitHub Account kannst Du es uns wissen lassen...


Was unsere Kunden ĂŒber uns sagen

/img/homepage/testimonial_bg.svg
Ofa Bamberg GmbHFabian Bohnen
Ludwig-Maximilians-UniversitĂ€t MĂŒnchenProf. Dr. Mario Haim
Deutsches MuseumGeorg Hohmann
Fonds Finanz Maklerservice GmbHNorbert Porazik
Technische UniversitĂ€t HamburgSören SchĂŒtt-Sayed
  • Ofa Bamberg GmbH
    Ofa Bamberg GmbH
    B2B Online-Shop | B2C Website | Hosting | Betreuung | Security
    Fabian Bohnen
    © Ofa Bamberg GmbH
    Seit zehn Jahren betreut Blueshoe unsere Webapplikationen – vom Onlineshop bis hin zum Web‑Umfeld. Die Zusammenarbeit ist stets kompetent, verlĂ€sslich und vorausschauend. Blueshoe ist fĂŒr uns ein Partner, auf den wir uns jederzeit verlassen können.
    Fabian BohnenGeschĂ€ftsfĂŒhrer
  • Ludwig-Maximilians-UniversitĂ€t MĂŒnchen
    Ludwig-Maximilians-UniversitĂ€t MĂŒnchen
    Plattformentwicklung | Hosting | Betreuung | APIs | Website
    Prof. Dr. Mario Haim
    Blueshoe hat unsere Forschungsdatenplattform Munich Media Monitoring (M3) entwickelt und uns hervorragend dabei beraten. Das Team hat unsere Anforderungen genau verstanden und sich aktiv in die Ausgestaltung der Software und der Betriebsumgebung eingebracht. Wir sind froh, dass auch Wartung und weiterfĂŒhrender Support in Blueshoes HĂ€nden liegen.
    Prof. Dr. Mario HaimLehrstuhlinhaber, Institut fĂŒr Kommunikationswissenschaft und Medienforschung
  • Deutsches Museum
    Deutsches Museum
    Digitalisierung | Beratung | Datenbank-Optimierung | GraphQL | CMS
    Georg Hohmann
    Foto: Anne Göttlicher
    Im Rahmen eines komplexen Digitalisierungsprojekts fĂŒr unsere Exponate-Datenbank war Blueshoe ein Ă€ußerst verlĂ€sslicher Partner. Sie haben uns nicht nur wĂ€hrend des gesamten Projekts hervorragend beraten, sondern unsere Anforderungen perfekt umgesetzt. Dank ihrer Arbeit ist unsere Datenbank nun ein bedeutender Mehrwert fĂŒr die weltweite wissenschaftliche Forschung.
    Georg HohmannLeiter Deutsches Museum Digital
  • Fonds Finanz Maklerservice GmbH
    Fonds Finanz Maklerservice GmbH
    Plattformentwicklung | Prozess-Systeme | Hosting | Betreuung | Zertifikate | Website
    Norbert Porazik
    © Fonds Finanz Maklerservice GmbH
    Blueshoe ist unsere verlĂ€ngerte Werkbank fĂŒr Entwicklung, Wartung und Support unserer Weiterbildungs- und Zertifizierungsplattformen. Das Team hat sich grĂŒndlich in unsere AblĂ€ufe eingearbeitet, und wir freuen uns, Blueshoe als zuverlĂ€ssigen Partner an unserer Seite zu haben.
    Norbert PorazikGrĂŒnder und GeschĂ€ftsfĂŒhrer
  • Technische UniversitĂ€t Hamburg
    Technische UniversitÀt Hamburg
    Plattformentwicklung | Beratung | Prozess-Systeme | Hosting | Website
    Sören SchĂŒtt-Sayed
    Seit 2019 unterstĂŒtzt uns die Blueshoe GmbH tatkrĂ€ftig bei der Entwicklung und Weiterentwicklung des "Digital Learning Lab" und der "Digital Learning Tools". Dank ihrer Beratung konnten wir von Anfang an auf eine zukunftssichere, moderne technische Struktur setzen. Die Zusammenarbeit ist reibungslos, und wir fĂŒhlen uns rundum gut betreut. Und davon profitieren dann auch die LehrkrĂ€fte in Hamburg.
    Sören SchĂŒtt-SayedOberingenieur