diff --git a/server/pruef-stelle.mjs b/server/pruef-stelle.mjs
index 60989249..280c9ff0 100644
--- a/server/pruef-stelle.mjs
+++ b/server/pruef-stelle.mjs
@@ -168,8 +168,24 @@ async function hinUndZurueck(wieZurueck) {
await seite.waitForNavigation({ waitUntil: "networkidle" }).catch(() => {});
} else {
await seite.goBack({ waitUntil: "load" });
+ if (wieZurueck === "neuladen") {
+ /* WARUM AUSGERECHNET DAS (21.09.2026): kopf.js laedt die Seite
+ selbst neu, sobald der Browser sie aus seinem Rueckwaerts-
+ Speicher holt -- damit keine veralteten Zahlen dastehen. Nach
+ einem Neuladen heisst die Navigationsart aber "reload", nicht
+ "back_forward". Die Wiederherstellung sprang deshalb nicht an
+ und LOESCHTE die gemerkte Stelle sogar.
+
+ Hier wird nie `persisted` erreicht, weil kopf.js einen
+ Ereignisstrom offenhaelt und der den Rueckwaerts-Speicher
+ aussperrt -- genau deshalb war jede Messung gruen und Filipes
+ Handy nicht. Das Neuladen wird deshalb von Hand ausgeloest:
+ Der ZUSTAND danach ist derselbe, und nur auf den kommt es an. */
+ await seite.waitForTimeout(2200);
+ await seite.reload({ waitUntil: "load" });
+ }
}
- await seite.waitForTimeout(3000);
+ await seite.waitForTimeout(3600);
const nach = await seite.evaluate(() => ({
y: Math.round(window.scrollY),
art: performance.getEntriesByType("navigation")[0]?.type,
@@ -237,6 +253,63 @@ try {
await ctx.close();
}
}
+ melde("\n=== 4. Zurueck, und dann laedt die Seite neu ===");
+ {
+ const r = await hinUndZurueck("neuladen");
+ ok(!r.zuKurz, r.zuKurz ? `zu kurz (${r.zuKurz}px)` : "die Seite ist hoch genug");
+ if (!r.zuKurz) {
+ ok(r.art === "reload",
+ `die Navigationsart ist wirklich ein Neuladen (${r.art}) -- sonst `
+ + "pruefte dieser Abschnitt denselben Weg wie Abschnitt 2");
+ ok(r.y >= r.vor - 80,
+ `und die Stelle ueberlebt es: ${r.vor}px hin, ${r.y}px zurueck`);
+ }
+ }
+
+ melde("\n=== 5. Eine fremde Ankunft darf die Stelle nicht wegwerfen ===");
+ {
+ /* DER EIGENTLICHE FEHLER war nicht, dass nicht wiederhergestellt
+ wurde -- sondern dass die gemerkte Stelle dabei GELOESCHT wurde.
+ Ein einziges Neuladen reichte, und danach half auch das naechste
+ Zurueckgehen nicht mehr. Genau das wird hier gemessen. */
+ const ctx = await browser.newContext({ viewport: { width: 1280, height: 800 } });
+ await ctx.addCookies(keks.split("; ").filter(Boolean).map((z) => {
+ const [name, ...rest] = z.split("=");
+ return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" };
+ }));
+ try {
+ const seite = await ctx.newPage();
+ await seite.goto(`http://127.0.0.1:${PORT}/workspace/start.html`,
+ { waitUntil: "networkidle" });
+ await seite.waitForTimeout(1800);
+ const hoch = await seite.evaluate(() => document.documentElement.scrollHeight);
+ const ziel = Math.min(900, Math.max(200, hoch - 700));
+ await seite.evaluate((y) => window.scrollTo(0, y), ziel);
+ await seite.waitForTimeout(700);
+ const gemerkt = await seite.evaluate(() => {
+ try { return sessionStorage.getItem("ws-stelle:/workspace/start.html"); }
+ catch (e) { return null; }
+ });
+ ok(!!gemerkt, `beim Scrollen wird laufend gemerkt (${gemerkt})`);
+
+ /* Eine Ankunft OHNE Herkunft -- der Neuanfang. */
+ await seite.goto(`http://127.0.0.1:${PORT}/workspace/start.html`,
+ { waitUntil: "load" });
+ await seite.waitForTimeout(2600);
+ const oben = await seite.evaluate(() => Math.round(window.scrollY));
+ ok(oben <= 80, `ein Neuanfang faengt oben an (${oben}px)`);
+
+ const nochDa = await seite.evaluate(() => {
+ try { return sessionStorage.getItem("ws-stelle:/workspace/start.html"); }
+ catch (e) { return null; }
+ });
+ ok(!!nochDa, nochDa
+ ? "und die gemerkte Stelle ist trotzdem noch da"
+ : "GELOESCHT -- das naechste Zurueckgehen haette nichts mehr");
+ } finally {
+ await ctx.close();
+ }
+ }
} finally {
await browser.close();
}
diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html
index 836e9492..a2bf9570 100644
--- a/workspace/anruf-probe.html
+++ b/workspace/anruf-probe.html
@@ -16,15 +16,15 @@
verdeckt. Gefunden hat es pruef-struktur.
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
-
-
+
+
-
+