Inhaltsverzeichnis
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.
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:
- Es wird eine Menge von Komponenten oder Seiten definiert, welche zu prĂŒfen sind.
- Basierend darauf wird eine Baseline generiert.
- 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.
![]()
(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.
![]()
(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:
![]()
Mit einem Klick auf Durchsuchen kann die Ordnerstruktur der Artefakte durchsucht werden:
![]()
Wir können visuelle Regression Tests auch fĂŒr deine App einrichten.
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
- Applitools Eyes â KI-gestĂŒtzte visuelle Tests mit Integration in viele Testframeworks
- Percy (by BrowserStack) â Automatisierte UI-Screenshots mit GitHub-Integration
- Visual AI by LambdaTest â Cloud-basierte visuelle Regressionstests
- Chromatic â Speziell fĂŒr Storybook-basierte UI-Tests
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
- Ofa Bamberg GmbHB2B Online-Shop | B2C Website | Hosting | Betreuung | Security© Ofa Bamberg GmbH
- Ludwig-Maximilians-UniversitĂ€t MĂŒnchenPlattformentwicklung | Hosting | Betreuung | APIs | Website
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.
- Deutsches MuseumDigitalisierung | Beratung | Datenbank-Optimierung | GraphQL | CMSFoto: 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.
- Fonds Finanz Maklerservice GmbHPlattformentwicklung | Prozess-Systeme | Hosting | Betreuung | Zertifikate | Website© 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.
- Technische UniversitÀt HamburgPlattformentwicklung | Beratung | Prozess-Systeme | Hosting | Website
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.

























