Weiter gehts! Nach dem Einstieg in das Testen mit Lighthouse schauen wir uns diesmal Techniken und Ideen an, mit denen die Performance-Tests in die eigene Infrastruktur integriert werden können.
Im vorangegangenen Artikel habe ich darauf verwiesen, dass die Page Experience Signals [1] ab Mai 2021 wichtiger Bestandteil des Rankingsystems von Google werden. In einem der letzten Updates auf dem Google Blog [2] wurde nun verkündet, dass sich das komplette Rollout noch bis August erstrecken wird, um Seitenbetreibern mehr Zeit zu geben, etwaige Anpassungen durchzuführen und selbst die Auswirkungen der Änderungen messen zu können. Zunächst werden die drei Metriken Largest Contentful Paint (LCP), First Input Delay (FID) und Cumulative Layout Shift (CLS) in die Seitenbewertung einfließen. Hier eine kurze Übersicht zu diesen Metriken:
Wenn Sie Nutzer der Google Search Console sind, können Sie die Auswertung Ihrer Seite auch dort finden. Diese basieren auf dem Chrome UX Report (CrUX), das heißt die Daten stammen von Chrome-Nutzern. Wenn Sie eine neue Seite oder Webanwendung haben, kann es einige Zeit dauern, bis genügend Nutzerdaten gesammelt worden sind, um Ihnen dort einen Bericht zu geben. In Zukunft werden sicherlich weitere Metriken aus den Web Vitals in das Ranking einfließen. Da zunächst aber die drei genannten entscheidend sein werden, schauen wir uns diese hier genauer an. In diesem Artikel finden Sie Ansätze, wie Sie diese Metriken in automatisierten Tests nutzen. Werfen wir noch einmal einen Blick auf die hier relevanten Teile des Outputs von Lighthouse:
|
|
Wir sehen hier nochmal einen Ausschnitt aus der Struktur des JSON-Objektes, das von Lighthouse zurückgegeben wird. Die Metrik FID wird hier nicht betrachtet, da diese nur mit realen Nutzerdaten aus CrUX erhoben wird, nicht mit den Tools, die wie hier unter Laborbedingungen laufen. In den einzelnen Audits findet man sowohl den errechneten Score als auch die Rohdaten. Mit beiden können wir in der eigenen Testsuite arbeiten. Die Scores aus den Kategorien können wir nutzen, um die Gesamtperformance der Seite zu überwachen. Mit den weiteren Rohdaten aus den Metriken lassen sich dann feinere Tests schreiben, mit denen gezielt Schwachstellen identifiziert werden können. Die folgenden Beispiele bauen auf denen im o.g. Einstiegsartikel Artikel auf.
|
|
Wir wollen, dass unsere Testsuite uns warnt, falls unsere Seite die Grenze der Bewertungsstufe “Good” unterschreitet. Wir definieren also den Grenzwert entsprechend. Außerdem setzen wir eine Timinggrenze für bestimmte Audits, die wir genauer betrachten.
|
|
Am Beispiel der oben genannten Metriken gibt es hier nun eine kleine Testsuite. Verwendet wird Javascript/Typescript/WebdriverIO. Zunächst werden die Scores für die großen Kategorien überprüft, anschließend werden nochmal explizit die Werte der besprochenen Metriken angeschaut.
|
|
Die Testsuite führt zunächst Lighthouse auf der eingetragenen URL aus und die gesammelten Daten werden in einem JSON-Objekt zusammengefasst. Die einzelnen Tests evaluieren dann die gemessenen Werte und stellen anhand von uns konfigurierter Grenzen fest, ob der Test erfolgreich war oder nicht. Die Metrik “Cumulative Layout Shift” hatte oben einen Wert von unter 0.01, dies ist laut der von uns gesetzten Grenzen ausreichend und so gilt der Test als bestanden. Die Metrik “Largest Contentful Paint” allerdings liegt mit etwa 13 Sekunden weit über der Grenze von 1.5 Sekunden, der Test schlägt demnach fehl. Lighthouse gibt zu Metriken, die nicht dem Idealwert entsprechen, auch immer Vorschläge (Opportunities), wie der Wert verbessert werden könnte. An diesem sehr einfachen Beispiel sieht man leicht, wie man mit den Outputs von Lighthouse ganz nach eigenen Bedürfnissen Tests bauen kann.
Als weiteres interessantes Anwendungsbeispiel soll hier das Testen der gesamten Sitemap durch Lighthouse dienen. Mit lighthouse-batch, einem kleinen extra NPM-Package, können Sie Lighthouse einfach auf eine Liste von URLs anwenden.
|
|
Die URLs können zeilenweise in einer TXT-Datei stehen. Dazu extrahieren wir die URLs aus der Sitemap und führen auf der zusammengestellten Liste lighthouse-batch aus.
|
|
Lighthouse-batch legt einen Ordner mit einer Zusammenfassung aller Seiten und den einzelnen Berichten an.
Lighthouse CI [3] ist eine Suite, die das Leistungsmessen mit Lighthouse im Bereich CI möglichst unkompliziert machen soll. Dabei werden Reports erstellt, die miteinander verglichen werden können. So können Verbesserungen, aber auch Regressionen festgestellt werden. Lighthouse CI lässt sich leicht in beispielsweise Github einbinden. Folgendes Bild zeigt, wie sich verschiedene Metriken über Reports hin entwickelt haben. In den entsprechenden Dokumentationen finden Sie Ansätze, wie Sie Lighthouse CI in Ihre Infrastruktur einbinden können.
Die existierenden Lösungen wie Lighthouse CI bieten eine einfache, konfigurierbare Lösung, mit der Sie Reports von Lighthouse verwalten und analysieren können. Sie können aber auch selbst Lighthouse in Ihre automatisierten Tests integrieren und nach Belieben die generierten Daten verwerten. Eines wird aber deutlich: Diese Metrik wird steigenden Einfluss auf die Sichtbarkeit Ihrer Webauftritte haben. Es lohnt sich also in jedem Fall, das eigene CI/CD-Portfolio hiermit zu ergänzen.