Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 4 Min.

Ran an den echten Browser

Wer Frontend-Tests in Node.js ausführt, testet nicht wirklich. Nils Hartmann erklärt, warum der Vitest Browser Mode das ändert – und wie Next.js mit Server Rendering und Caching Performance-Probleme löst, bevor sie entstehen.

Tests, die im Browser laufen, liefern andere Ergebnisse als Tests, die Node.js simuliert. Das klingt selbstverständlich. Ist es aber nicht. Die React Testing Library, das De-facto-Standardwerkzeug für Komponententests in React-Projekten, führt Tests nicht im Browser aus. Sie läuft in Node.js und simuliert dort Browser-APIs wie den DOM. Das funktioniert für viele Szenarien, hat aber einen Haken: Es ist und bleibt eine Simulation. Was genau in einem echten Browser passiert, bleibt außen vor.

Der Vitest Browser Mode geht einen anderen Weg. Tests laufen direkt in echten Browsern – ähnlich wie bei Playwright. Der Unterschied zu Playwright: Dort testet man fertige Anwendungen als Blackbox, End-to-End. Der Vitest Browser Mode testet einzelne Komponenten, also Unit- und Integrationstests, aber im echten Browser-Kontext. Für Nils Hartmann, freiberuflicher Software-Entwickler und -Architekt aus Hamburg, ist das kein akademischer Unterschied. Die Testergebnisse werden schlicht realistischer.

Wer aus der React Testing Library kommt, muss übrigens kein komplett neues API lernen. Die Unterschiede sind überschaubar. Was sich ändert, ist die Laufzeitumgebung – und damit das Vertrauen in die Testergebnisse.

Schneller mit Server Side Rendering

Beim Thema Performance in Next.js hat Nils eine klare Einschätzung: Der größte Hebel ist oft, möglichst viel auf den Server zu verlagern. Server-seitiges Rendering beschleunigt die initiale Ladezeit erheblich, weil der Browser fertiges HTML bekommt statt eine JavaScript-Wüste, die er erst selbst zusammenbauen muss.

Next.js bringt dafür ein ausgefeiltes Caching-System mit. Ganze Seiten lassen sich cachen, einzelne Seitenbereiche ebenfalls. Im Build-Prozess können Seiten sogar vorgerendert werden, sodass der Server bei Anfragen fertige HTML-Dokumente ausliefert. Wer Daten aus mehreren Quellen gleichzeitig braucht, kann die Backend-Requests parallel abfeuern statt sie sequenziell abzuarbeiten.

Eine Frage drängt sich dabei aber auf: Wenn Next.js alles serverseitig vorrendert, auch interaktive Komponenten – ist das nicht doppelte Arbeit? Der Server rendert, der Browser rendert nochmal. Nils bejaht das, erklärt aber auch, warum Next.js diesen Kompromiss bewusst eingeht. Das Ziel ist eine blitzschnelle erste Darstellung. Wenn der Nutzer sofort etwas sieht, ist die oberste Prämisse erfüllt – auch wenn der Browser die Komponente kurz darauf nochmal rendert, um sie interaktiv zu machen. Im Optimalfall merkt der Nutzer davon nichts, weil das Client-seitige Render-Ergebnis dem serverseitigen entsprechen sollte.

Die Grenze zwischen Server- und Client-Komponenten zieht Nils nach einer einfachen Faustregel: Je mehr statischer Inhalt, desto eher ist es eine React Server Component. Je mehr Interaktivität gebraucht wird, desto eher muss die Komponente in den Browser. Technisch ist die Trennung simpel – use client ans Modul schreiben, fertig. Das Gefühl dafür, wann das wirklich sinnvoll ist, kommt mit der Erfahrung.

 

Du willst mehr von React, Next.js und Nils Hartmann erfahren. Dann komm auf die DWX 2026, 29. Juni bis 2. Juli 2026, Mannheim (https://www.developer-world.de/dwx). Hier spricht er über Moderne React Komponenten-Tests mit dem "Vitest Browser Mode" und High Performance Webapps mit Next.js.

 

Nils Hartmann ist freiberuflicher Software-Entwickler und -Architekt aus Hamburg. Seine Schwerpunkte sind die Entwicklung von Backend-Services mit Java sowie Frontend-Applikationen mit React. Er gibt Schulungen und Workshops zu diesen Themen und hat ein Buch über React geschrieben. Weitere Informationen und Kontakt: https://nilshartmann.net

 

Neueste Beiträge

Setup per CLI oder als Stand-alone-Runtime - Infrastructure as Code mit Azure Bicep, Teil 1
Dieser Beitrag erklärt, was Bicep ist, wie das Bicep CLI als zugrunde liegende Engine installiert wird, aus welchen Grundbausteinen ein Template besteht und wie VS Code mit der passenden Erweiterung den Einstieg erleichtert.
5 Minuten
Legacy-Modernisierung mit Augenmaß gestalten
Legacy-Systeme durch radikale Ablösungen zu modernisieren, kann schnell nach hinten losgehen. Mehr und mehr setzen sich deshalb Ansätze durch, die Funktionen schrittweise ersetzen, Schnittstellen kontrolliert migrieren und die neue Architektur sukzessive aufbauen.
8 Minuten
26. Okt 2026
Laufzeitgewinn messen - Schnellere .NET-CI-Pipelines mit Test Sharding, Teil 4
Mehr Shards können das Feedback beschleunigen, aber auch zugleich die CI-Kosten erhöhen. Ein Vergleich mit zwei Referenzläufen zeigt, wo sich zusätzliche Runner lohnen. Ebenso wichtig ist der Nachweis, dass weiterhin alle vorgesehenen Tests laufen.
6 Minuten

Das könnte Dich auch interessieren

Health Checks und Kubernetes - Health Checks in ASP.NET richtig nutzen, Teil 4
In Kubernetes entscheidet ein Health Check nicht nur über Sichtbarkeit im Monitoring, sondern auch darüber, ob Traffic fließt oder ein Container neu startet. Hier zeigen wir, warum saubere Grenzen zwischen Liveness und Readiness in produktiven ASP.NET-Anwendungen so wichtig sind.
4 Minuten
Browser-Apps mit Avalonia entwickeln - Avalonia
Klassische UI-Frameworks finden ihren Weg in den Browser
5 Minuten
11. Aug 2025
Grundlagen von Health Checks - Health Checks in ASP.NET richtig nutzen, Teil 1
Ein einfacher Statuscode sagt wenig darüber aus, ob eine Anwendung wirklich betriebsbereit ist. ASP.NET bietet dafür mehr Möglichkeiten, als viele /health-Endpunkte vermuten lassen. Genau dort beginnt der Unterschied zwischen Erreichbarkeit und echter Diagnose.
4 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige