diff --git a/server/pruef-reaktion-schmal.mjs b/server/pruef-reaktion-schmal.mjs index 86c809ef..7b76c7b0 100644 --- a/server/pruef-reaktion-schmal.mjs +++ b/server/pruef-reaktion-schmal.mjs @@ -322,6 +322,57 @@ for (const [breite, hoehe, wie] of GERAETE) { " und der Knopf zum Zumachen ist auch jetzt da und anklickbar — " + "das trennt einen Schoenheitsfehler von einer Falle"); + /* ==== DER HINWEIS: SICHTBAR, ABER NICHT AUF KOSTEN DES BILDES === + + Zwei Fehler an einer Stelle, beide am 02.10.2026 gemessen: + + · Er war NULL PIXEL hoch, obwohl `hidden=false` und 104 + Zeichen Text -- ein `role="alert"`, den niemand sieht. + · Und auf 320 px hatte er sich vorher eine stillschweigende + fuenfte Rasterzeile genommen: 71 Pixel, die dem Bild + fehlten (56 statt 127). + + HIER WIRD DER ZUSTAND SELBST HERGESTELLT und nicht abgewartet. + Im Betrieb erscheint der Hinweis, wenn Kamera oder Mikrofon + fehlen -- auf einem Messrechner ist das immer so, auf einem + Handy mit Freigabe nie. Eine Pruefung, die auf die Kamera des + Messrechners baut, prueft die Messumgebung. Also: Text + hineinschreiben, sichtbar machen, messen. */ + const hinweis = await seite.evaluate(() => { + const f = document.getElementById("fehler"); + const bildVorher = Math.round( + document.getElementById("leinwand").getBoundingClientRect().height); + f.textContent = "Kamera oder Mikrofon sind nicht freigegeben. " + + "Im Browser oben in der Adresszeile laesst sich das aendern."; + f.hidden = false; + return { bildVorher }; + }); + await seite.waitForTimeout(300); + const hinweisLage = await seite.evaluate(() => { + const f = document.getElementById("fehler"); + const r = f.getBoundingClientRect(); + const mitte = document.elementFromPoint( + Math.min(innerWidth - 1, Math.max(0, r.left + r.width / 2)), + Math.min(innerHeight - 1, Math.max(0, r.top + r.height / 2))); + return { + hoch: Math.round(r.height), + imFenster: r.height > 0 && r.top >= 0 && r.bottom <= innerHeight, + obenauf: !!mitte && (mitte === f || f.contains(mitte)), + bildNachher: Math.round( + document.getElementById("leinwand").getBoundingClientRect().height), + }; + }); + ok(hinweisLage.hoch > 0 && hinweisLage.imFenster && hinweisLage.obenauf, + `der Kamerahinweis ist lesbar, wenn er erscheint (${hinweisLage.hoch} px, im Fenster` + + `, obenauf) — vorher war er 0 px hoch`); + ok(hinweisLage.bildNachher === hinweis.bildVorher, + ` und er kostet das Bild nichts (${hinweis.bildVorher} -> ${hinweisLage.bildNachher} px)` + + " — vorher nahm er sich auf 320 px eine eigene Rasterzeile"); + await seite.evaluate(() => { + const f = document.getElementById("fehler"); + f.textContent = ""; f.hidden = true; + }); + ok(konsole.length === 0, konsole.length ? "Fehler im Browser: " + konsole.join(" | ") : "kein Absturz im Browser"); diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 79472dd4..44db2211 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,8 +16,8 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +