diff --git a/server/pruef-css-klassen.mjs b/server/pruef-css-klassen.mjs index 83cfe892..26d64a5e 100644 --- a/server/pruef-css-klassen.mjs +++ b/server/pruef-css-klassen.mjs @@ -328,7 +328,12 @@ console.log("\n=== Ist irgendeine Schrift zu klein? ==="); Sie steht hier als Zahl und nicht als Liste, damit niemand eine neue Stelle in eine Ausnahmeliste einträgt und sie damit stillschweigend erlaubt. */ - const GRUNDLINIE = 43; + /* 43 -> 42 am 14.09.2026: Die Marke auf schmalen Bildschirmen stand + auf .68rem = 10,88 px (gate.css, Zugangswand von Team Dogi) und ist + jetzt .72rem. Die Grundlinie wird MITGEZOGEN -- sonst duerfte der + Fortschritt lautlos wieder verlorengehen, und eine Grundlinie, die + nur nach oben nachgibt, ist keine. */ + const GRUNDLINIE = 42; ok(zuKlein.length <= GRUNDLINIE && gemessen > 150, zuKlein.length > GRUNDLINIE ? `${zuKlein.length} Stellen unter ${GRENZE_PX} px — das sind ` diff --git a/server/pruef-handy.mjs b/server/pruef-handy.mjs index 0b33a4cc..b02cd865 100644 --- a/server/pruef-handy.mjs +++ b/server/pruef-handy.mjs @@ -221,13 +221,43 @@ const messen = () => ({ /* 3. Beruehrziele. 24x24 CSS-Pixel ist das Mindestmass nach WCAG 2.2 (2.5.8). Gemessen wird das Ziel selbst ODER sein umschliessender Bereich -- ein 16 px grosses Symbol in einem 44 px grossen Knopf - ist in Ordnung. */ - klein: [...document.querySelectorAll("button, a[href], input, select, textarea, [role=button]")] + ist in Ordnung. + + LINKS IN EINEM SATZ SIND AUSGENOMMEN -- und zwar nicht, weil es + bequemer ist, sondern weil 2.5.8 das selbst so sagt: "Inline: The + target is in a sentence or its size is otherwise constrained by + the line-height of non-target text." + + Die Pruefung zitierte bis zum 14.09.2026 die Regel, aber nicht + ihre Ausnahme. Gemeldet wurden dadurch die zwei Verweise im + Fliesstext der Treff-Regeln ("Der Treff", "Regeln & Hilfe", je + 20 px hoch). Sie auf 24 px zu bringen hiesse, die Zeilenhoehe des + Absatzes zu sprengen -- man wuerde also einen Text kaputtmachen, + um eine Regel zu erfuellen, die diesen Text ausdruecklich nicht + meint. + + ENG GEFASST: Nur , nur wirklich inline dargestellt, und nur + wenn im selben Absatz auch Text steht, der NICHT zum Link gehoert. + Ein allein stehender Link bleibt ein Beruehrziel. */ + klein: (() => { + const imSatz = (e) => { + if (e.tagName !== "A") return false; + if (!getComputedStyle(e).display.startsWith("inline")) return false; + const eltern = e.parentElement; + if (!eltern) return false; + const daneben = [...eltern.childNodes] + .filter((n) => n !== e) + .map((n) => (n.textContent || "").trim()) + .join(" ").trim(); + return daneben.length >= 10; // das ist der Satz drumherum + }; + return [...document.querySelectorAll("button, a[href], input, select, textarea, [role=button]")] .filter((e) => { const r = e.getBoundingClientRect(); if (r.width < 1 || r.height < 1) return false; const st = getComputedStyle(e); if (st.display === "none" || st.visibility === "hidden") return false; + if (imSatz(e)) return false; return r.width < 24 || r.height < 24; }) .map((e) => { @@ -235,7 +265,8 @@ const messen = () => ({ return `${e.tagName}"${(e.textContent || e.getAttribute("aria-label") || "").trim().slice(0, 14)}" ` + `${Math.round(r.width)}x${Math.round(r.height)}`; }) - .slice(0, 5), + .slice(0, 5); + })(), /* 4. Ueberlappende Bedienelemente. Zwei Knoepfe, die sich decken, heissen: Man trifft den falschen. Geprueft wird der Mittelpunkt -- @@ -620,6 +651,43 @@ ok(mitUmschalter.size >= 1 && fremdGeprueft === KOPF_GERAETE.length * mitUmschal ok(weckerGeprueft >= KOPF_GERAETE.length, `das Weckerfeld wurde ${weckerGeprueft}-mal wirklich gemessen`); +/* ===================================================================== + GEGENPROBE ZUR BERUEHRZIEL-REGEL (14.09.2026) + + Seit heute hat die Regel eine Ausnahme (Links im Satz, WCAG 2.5.8). + Eine Regel mit Ausnahme braucht den Beweis in BEIDE Richtungen -- + sonst laesst sich nicht unterscheiden, ob sie nichts findet, weil + nichts da ist, oder weil die Ausnahme alles verschluckt. + + Diese Datei hatte bis heute ueberhaupt keine Gegenprobe. Sie konnte + also nie zeigen, dass sie ein zu kleines Ziel ueberhaupt bemerkt. + ===================================================================== */ +console.log("\n=== Gegenprobe zur Beruehrziel-Regel ==="); +{ + const kontext = await browser.newContext({ + viewport: { width: 390, height: 844 }, isMobile: true, hasTouch: true }); + const seite = await kontext.newPage(); + await seite.goto(BASIS + "/workspace/", { waitUntil: "networkidle" }); + await seite.evaluate(() => { + const k = document.createElement("div"); + k.id = "gegenprobe"; + /* Zweimal dieselbe Hoehe: einmal allein stehend, einmal im Satz. */ + k.innerHTML = + "xx" + + "

Das hier ist ein ganz normaler Satz mit einem " + + "Verweis darin" + + " und noch etwas Text dahinter.

"; + document.body.append(k); + }); + const r = await seite.evaluate(messen); + const namen = r.klein.join(" | "); + ok(/20x20/.test(namen), + `ein allein stehendes 20x20-Ziel wird erkannt (${namen || "nichts gefunden"})`); + ok(!/Verweis darin/.test(namen), + "ein gleich grosser Verweis IM SATZ wird zu Recht nicht gemeldet (WCAG 2.5.8)"); + await seite.evaluate(() => document.getElementById("gegenprobe")?.remove()); + await kontext.close(); +} await browser.close(); try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ } console.log(fehler ? `\n${fehler} Prüfung(en) fehlgeschlagen.` : "\nAlles in Ordnung."); diff --git a/workspace/app.webmanifest b/workspace/app.webmanifest index ebd0cc78..5c9f4483 100644 --- a/workspace/app.webmanifest +++ b/workspace/app.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/workspace-192.png?v=202609141819", + "src": "/assets/img/app-symbole/workspace-192.png?v=202609141948", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-512.png?v=202609141819", + "src": "/assets/img/app-symbole/workspace-512.png?v=202609141948", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609141819", + "src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609141948", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609141819", + "src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609141948", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/assets/css/gate.css b/workspace/assets/css/gate.css index e76ce961..936454bc 100644 --- a/workspace/assets/css/gate.css +++ b/workspace/assets/css/gate.css @@ -828,7 +828,12 @@ body.oeffnet .buehne__bild { filter: saturate(1) brightness(1); transition: filt .tafel { padding: 16px 18px 14px; } .titel { font-size: 1.42rem; margin-bottom: 4px; } .unterzeile { margin-bottom: 16px; font-size: .88rem; } - .marke { font-size: .68rem; margin-bottom: 3px; } + /* .72rem = 11,52 px. Vorher .68rem = 10,88 px und damit unter der + Hausuntergrenze von 11,5 px -- gefunden von pruef-handy auf der + Zugangswand von Team Dogi ("DogFather", "Team Dogi"). Das ist die + erste Seite, die ein neuer Modi ueberhaupt sieht, und sie wird mit + dem Daumen bedient. Dieselbe Hebung wie seinerzeit in heim.css. */ + .marke { font-size: .72rem; margin-bottom: 3px; } .feldschild { margin-bottom: 7px; font-size: .74rem; } .rollen { margin-bottom: 14px; } diff --git a/workspace/aufgaben.html b/workspace/aufgaben.html index f38beb82..4f65bbc0 100644 --- a/workspace/aufgaben.html +++ b/workspace/aufgaben.html @@ -12,19 +12,19 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - + + + + + + - + @@ -252,11 +252,11 @@ - - - - - - + + + + + + diff --git a/workspace/automation.html b/workspace/automation.html index 43436a31..7e35b9cf 100644 --- a/workspace/automation.html +++ b/workspace/automation.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -147,11 +147,11 @@ - - - - - - + + + + + + diff --git a/workspace/bereich.html b/workspace/bereich.html index 1bb07653..c59a18de 100644 --- a/workspace/bereich.html +++ b/workspace/bereich.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -181,15 +181,15 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/workspace/calls.html b/workspace/calls.html index 7fdc878e..e61e392c 100644 --- a/workspace/calls.html +++ b/workspace/calls.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -89,12 +89,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/chat.html b/workspace/chat.html index d5af0658..67234eef 100644 --- a/workspace/chat.html +++ b/workspace/chat.html @@ -12,26 +12,26 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -341,11 +341,11 @@ - - - - - - + + + + + + diff --git a/workspace/content.html b/workspace/content.html index 1050ac4a..b1e7add9 100644 --- a/workspace/content.html +++ b/workspace/content.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -179,13 +179,13 @@ - - - - - - - - + + + + + + + + diff --git a/workspace/crew-index.html b/workspace/crew-index.html index f9bdf226..203050a3 100644 --- a/workspace/crew-index.html +++ b/workspace/crew-index.html @@ -36,15 +36,15 @@ - - - + + + - + @@ -319,6 +319,6 @@ - + diff --git a/workspace/crew.webmanifest b/workspace/crew.webmanifest index 1579fdc7..d55a06b1 100644 --- a/workspace/crew.webmanifest +++ b/workspace/crew.webmanifest @@ -13,25 +13,25 @@ "theme_color": "#06090f", "icons": [ { - "src": "/assets/img/app-symbole/crew-192.png?v=202609141819", + "src": "/assets/img/app-symbole/crew-192.png?v=202609141948", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-512.png?v=202609141819", + "src": "/assets/img/app-symbole/crew-512.png?v=202609141948", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { - "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609141819", + "src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609141948", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, { - "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609141819", + "src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609141948", "sizes": "512x512", "type": "image/png", "purpose": "maskable" diff --git a/workspace/dateien.html b/workspace/dateien.html index d823a527..15f7588c 100644 --- a/workspace/dateien.html +++ b/workspace/dateien.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -108,11 +108,11 @@ - - - - - - + + + + + + diff --git a/workspace/entwicklung.html b/workspace/entwicklung.html index bbb1f3f5..2be85586 100644 --- a/workspace/entwicklung.html +++ b/workspace/entwicklung.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -94,10 +94,10 @@ - - - - - + + + + + diff --git a/workspace/index.html b/workspace/index.html index eb474bce..2105378a 100644 --- a/workspace/index.html +++ b/workspace/index.html @@ -30,9 +30,9 @@ - - - + + + @@ -401,6 +401,6 @@ - + diff --git a/workspace/kalender.html b/workspace/kalender.html index 228de212..05a38766 100644 --- a/workspace/kalender.html +++ b/workspace/kalender.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -377,12 +377,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/leistung.html b/workspace/leistung.html index 70209d03..eaf231db 100644 --- a/workspace/leistung.html +++ b/workspace/leistung.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -412,11 +412,11 @@ - - - - - - + + + + + + diff --git a/workspace/personen.html b/workspace/personen.html index 565af7a9..eecbf301 100644 --- a/workspace/personen.html +++ b/workspace/personen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -423,11 +423,11 @@ - - - - - - + + + + + + diff --git a/workspace/profil.html b/workspace/profil.html index 4eaea129..8f0523aa 100644 --- a/workspace/profil.html +++ b/workspace/profil.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -214,12 +214,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/rechte.html b/workspace/rechte.html index dc4dc7b5..b12fe14d 100644 --- a/workspace/rechte.html +++ b/workspace/rechte.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -134,10 +134,10 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - - + + + + + diff --git a/workspace/report.html b/workspace/report.html index 5fe1cbc9..0bf23f4f 100644 --- a/workspace/report.html +++ b/workspace/report.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -106,12 +106,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/scouting.html b/workspace/scouting.html index f9af26f5..ec5f0e3a 100644 --- a/workspace/scouting.html +++ b/workspace/scouting.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -173,11 +173,11 @@ - - - - - - + + + + + + diff --git a/workspace/start.html b/workspace/start.html index f941dcfb..d1c6ff83 100644 --- a/workspace/start.html +++ b/workspace/start.html @@ -12,21 +12,21 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - + + - + @@ -674,11 +674,11 @@

- - - - - - + + + + + + diff --git a/workspace/startcheck.html b/workspace/startcheck.html index 9748a798..697850d0 100644 --- a/workspace/startcheck.html +++ b/workspace/startcheck.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -85,12 +85,12 @@ - - - - - - - + + + + + + + diff --git a/workspace/steckbrief.html b/workspace/steckbrief.html index 3bc215b6..329b7c8d 100644 --- a/workspace/steckbrief.html +++ b/workspace/steckbrief.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -126,11 +126,11 @@ - - - - - - + + + + + + diff --git a/workspace/talente.html b/workspace/talente.html index 678cb149..00107e43 100644 --- a/workspace/talente.html +++ b/workspace/talente.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -94,10 +94,10 @@ - - - - - + + + + + diff --git a/workspace/team.html b/workspace/team.html index 8f46ae75..2b1010b3 100644 --- a/workspace/team.html +++ b/workspace/team.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + @@ -110,11 +110,11 @@ - - - - - - + + + + + + diff --git a/workspace/teamlage.html b/workspace/teamlage.html index 9a2d0c88..17d5f4b7 100644 --- a/workspace/teamlage.html +++ b/workspace/teamlage.html @@ -7,20 +7,20 @@ - - - - - - - + + + + + + + - + - - - - - + + + + + diff --git a/workspace/treff-moderation.html b/workspace/treff-moderation.html index b59d7f44..8761450a 100644 --- a/workspace/treff-moderation.html +++ b/workspace/treff-moderation.html @@ -7,14 +7,14 @@ - - - - - - - - + + + + + + + + @@ -110,10 +110,10 @@ - - - - - + + + + + diff --git a/workspace/treff-regeln.html b/workspace/treff-regeln.html index 4aac4718..ca6780e7 100644 --- a/workspace/treff-regeln.html +++ b/workspace/treff-regeln.html @@ -7,18 +7,18 @@ - - - - - - - + + + + + + + - + @@ -190,10 +190,10 @@ Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen, die seit dem 07.09. jede Seite danach absucht. --> - - - - - + + + + + diff --git a/workspace/uebersicht.html b/workspace/uebersicht.html index 4d991c6a..711b86b6 100644 --- a/workspace/uebersicht.html +++ b/workspace/uebersicht.html @@ -12,22 +12,22 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - + + + + - - - + + + - + @@ -149,12 +149,12 @@ - + - - - - - + + + + + diff --git a/workspace/wissen.html b/workspace/wissen.html index 936dd2ed..75badf7b 100644 --- a/workspace/wissen.html +++ b/workspace/wissen.html @@ -12,20 +12,20 @@ Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite eine Flaeche sind statt zweier. --> - - - - - - - + + + + + + + - + @@ -190,11 +190,11 @@ - - - - - - + + + + + +