From 7f43bfc2a3e3fce08413720308057a7f438ff627 Mon Sep 17 00:00:00 2001 From: Harlekin Date: Thu, 3 Sep 2026 17:26:40 +0200 Subject: [PATCH] Themenskript aus dem Hydrierungsvergleich nehmen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Browser leert das Nonce-Attribut, sobald er das Element geparst hat - so schreibt es die CSP-Spezifikation vor, damit kein Skript den Wert auslesen und sich damit selbst nachladen kann. React vergleicht beim Hydrieren trotzdem das Attribut, liest clientseitig den leeren Wert und meldet einen Unterschied, den es nicht gibt. suppressHydrationWarning an diesem einen Element sagt React, dass hier nichts zu vergleichen ist. Das Nonce selbst bleibt: ohne es blockiert die Richtlinie das Skript, und ohne das Skript blitzt beim Laden das falsche Thema auf. Nachgewiesen gegen einen Entwicklungsserver: ohne das Attribut erscheint genau die gemeldete Konsolenmeldung, mit ihm nicht. Ein erster Versuch, das per Konsolenprüfung im e2e abzusichern, war auch ohne den Fix grün - React meldet den Unterschied nur im Entwicklungsmodus, der Testlauf nutzt den Produktionsbau. Die Prüfung ist wieder entfernt; eine, die nicht anschlägt, ist schlimmer als keine. Stattdessen prüft tests/thema-vorab.test.ts die drei Dinge am Skript, die zusammenpassen müssen: Nonce, Hydrierungsausnahme und derselbe Speicherschlüssel wie im Umschalter. --- web/app/layout.tsx | 21 +++++++++++++++- web/tests/thema-vorab.test.ts | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 web/tests/thema-vorab.test.ts diff --git a/web/app/layout.tsx b/web/app/layout.tsx index 3d25c85..0b36e3d 100644 --- a/web/app/layout.tsx +++ b/web/app/layout.tsx @@ -35,7 +35,26 @@ export default async function RootLayout({ children }: { children: React.ReactNo return ( -