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

SQLite als Dokumentenspeicher: Kann das gut gehen? - SQLite für .NET-Entwickler, Teil 5
Die Embedded SQL-Datenbank SQLite kann auch als objektorientierte Datenbank beziehungsweise Dokumentenspeicher genutzt werden – nach Konzepten also, wie sie NoSQL-Datenbanken wie MongoDB einsetzen.
6 Minuten
29. Apr 2026
Volltextsuche mit SQLite: FTS5 und Fuzzy Search - SQLite für .NET-Entwickler, Teil 4
Hochperformante Suche ohne externe Suchmaschine? Wie man mit der in SQLite eingebauten Volltextsuch-Engine FTS5 eine effiziente Suche mit Tippfehlertoleranz implementiert – und in welchen Fällen Elasticsearch doch die bessere Wahl ist.
6 Minuten
22. Apr 2026
Python in .NET – Integration mit Python.NET - .NET, Python und KI, Teil 1
Python-Code lässt sich in .NET-Anwendungen mit dem Open-Source-Projekt Python.NET einbinden. Wir erklären die Installation und grundlegende Interop-Szenarien. Ein einfaches Beispiel veranschaulicht die Praxis.
6 Minuten

Das könnte Dich auch interessieren

00:00
KI direkt im Browser – Spielerei oder Zukunft? - W3C, WebGPU und die nächste Browser-Generation
Christian Liebel ist frisch gewähltes Mitglied der Technical Architecture Group des W3C – und damit mittendrin, wenn es darum geht, welche KI-Schnittstellen ins Web kommen. Sein Urteil: WebGPU ist längst da, WebNN kommt, und der Rest hängt davon ab, ob Firefox und Safari mitspielen. Das Interview.
21. Apr 2026
Ratzfatz umgewandelt - PDF aus HTML erzeugen
Mit dem NuGet-Paket SimpleHtmlToPdf erstellen Sie PDF-Dateien jetzt noch einfacher.
4 Minuten
00:00
Accessible Web: Weil "geht so" keine Antwort ist - DWX hakt nach
Barrierefreiheit ist kein Nachgedanke – sie ist Qualitätsmerkmal. Interview mit Maria Korneeva.
10. Mär 2026
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige