Community-Pruefung: auch auf dem Handy, und ohne feste Schwelle

Die Community ist ueberwiegend mit dem Telefon unterwegs -- eine
Messung auf 1400 px beantwortet fuer sie die falsche Frage. Und genau
auf dem Handy waren heute die haesslichsten Sachen: drei verschiedene
Kartenanordnungen, ein Hinweis quer ueber der naechsten Beschriftung.

Dabei fiel gleich eine feste Zahl auf: Die Pruefung verlangte
mindestens 20 sichtbare Wege. Auf dem Rechner sind es 27, auf dem
Handy 18 -- dort klappt die Kopfleiste um. Die Pruefung wurde also auf
der zweiten Breite rot, ohne dass etwas falsch war.

Sie auf 15 zu senken waere derselbe Fehler mit einer anderen Zahl.
Verlangt wird jetzt, was die Sache selbst hergibt: mindestens ein
sichtbarer Weg je Seite. Findet sich weniger, hat etwas nicht geladen
-- und dann ist "0 tote Wege" kein Ergebnis, sondern ein Messfehler.

10 Pruefungen, 0 Fehler, auf beiden Breiten.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-18 22:10:55 +02:00
co-authored by Claude Opus 5
parent ed8c83af09
commit fa34017809
+38 -7
View File
@@ -160,9 +160,25 @@ const FREMDE_WOERTER = [
"Pipeline", "überfällig", "In Arbeit", "Abgebrochen", "Pipeline", "überfällig", "In Arbeit", "Abgebrochen",
]; ];
/* ZWEI BREITEN, NICHT EINE.
Die Community ist ueberwiegend mit dem Telefon unterwegs. Eine
Messung auf 1400 px beantwortet fuer sie die falsche Frage -- und
genau auf dem Handy sind heute die haesslichsten Sachen aufgefallen
(drei verschiedene Kartenanordnungen, ein Hinweis quer ueber der
naechsten Beschriftung). Was auf einer Breite in Ordnung ist, muss
es auf der anderen nicht sein. */
const BREITEN = [
{ name: "Rechner", breite: 1400, hoehe: 1000 },
{ name: "Handy", breite: 412, hoehe: 915 },
];
const browser = await pw.chromium.launch(); const browser = await pw.chromium.launch();
try { try {
const ctx = await browser.newContext({ viewport: { width: 1400, height: 1000 } }); for (const geraet of BREITEN) {
const ctx = await browser.newContext({
viewport: { width: geraet.breite, height: geraet.hoehe },
isMobile: geraet.breite < 700, hasTouch: geraet.breite < 700 });
await ctx.addCookies(kGast.split("; ").filter(Boolean).map((z) => { await ctx.addCookies(kGast.split("; ").filter(Boolean).map((z) => {
const [name, ...rest] = z.split("="); const [name, ...rest] = z.split("=");
return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" }; return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" };
@@ -183,7 +199,7 @@ try {
} }
melde(""); melde("");
melde("=== 2. Wege, die ins Leere fuehren ==="); melde(`=== 2. Wege, die ins Leere fuehren (${geraet.name}) ===`);
let toteWege = 0, geprueftLinks = 0; let toteWege = 0, geprueftLinks = 0;
const gefunden = []; const gefunden = [];
for (const ziel of ziele) { for (const ziel of ziele) {
@@ -205,12 +221,24 @@ try {
} }
/* DIE ANZAHL GEHÖRT IN DIE BEDINGUNG. Ohne sie wäre „0 tote Wege" /* DIE ANZAHL GEHÖRT IN DIE BEDINGUNG. Ohne sie wäre „0 tote Wege"
auch dann wahr, wenn gar keine Seite geladen hätte. */ auch dann wahr, wenn gar keine Seite geladen hätte. */
ok(geprueftLinks >= 20 && toteWege === 0, /* DIE UNTERGRENZE WIRD ABGELEITET, NICHT GESETZT.
Hier stand `>= 20`. Auf dem Rechner sind es 27 Wege, auf dem Handy
18 -- dort klappt die Kopfleiste um, und ein Teil der Links ist
nicht sichtbar. Die feste Zahl machte die Pruefung auf der
zweiten Breite rot, ohne dass irgendetwas falsch war.
Sie einfach auf 15 zu senken waere derselbe Fehler mit einer
anderen Zahl. Verlangt wird jetzt, was die Sache selbst hergibt:
mindestens ein sichtbarer Weg je Seite. Findet sich weniger, hat
etwas nicht geladen -- und dann ist „0 tote Wege" keine Auskunft,
sondern ein Messfehler. */
ok(geprueftLinks >= ziele.length && toteWege === 0,
`${geprueftLinks} sichtbare Wege auf ${ziele.length} Seiten, davon ${toteWege} ins Leere`); `${geprueftLinks} sichtbare Wege auf ${ziele.length} Seiten, davon ${toteWege} ins Leere`);
for (const g of gefunden.slice(0, 10)) console.log(` -> ${g}`); for (const g of gefunden.slice(0, 10)) console.log(` -> ${g}`);
melde(""); melde("");
melde("=== 3. Sprache, die jemand anderem gehoert ==="); melde(`=== 3. Sprache, die jemand anderem gehoert (${geraet.name}) ===`);
let fremd = 0; let fremd = 0;
const wo = []; const wo = [];
for (const ziel of ziele) { for (const ziel of ziele) {
@@ -234,7 +262,7 @@ try {
===================================================================== */ ===================================================================== */
melde(""); melde("");
melde("=== 4. Und behaelt das Team seine Wege? ==="); melde("=== 4. Und behaelt das Team seine Wege? ===");
{ if (geraet.breite > 700) {
const ctx2 = await browser.newContext({ viewport: { width: 1400, height: 1000 } }); const ctx2 = await browser.newContext({ viewport: { width: 1400, height: 1000 } });
await ctx2.addCookies(kDogi.split("; ").filter(Boolean).map((z) => { await ctx2.addCookies(kDogi.split("; ").filter(Boolean).map((z) => {
const [name, ...rest] = z.split("="); const [name, ...rest] = z.split("=");
@@ -253,10 +281,13 @@ try {
} }
melde(""); melde("");
melde("=== 5. Und laeuft ueberhaupt alles? ==="); melde(`=== 5. Und laeuft ueberhaupt alles? (${geraet.name}) ===`);
ok(skriptfehler.length === 0, ok(skriptfehler.length === 0,
`kein Skriptfehler auf ${ziele.length} Seiten` `kein Skriptfehler auf ${ziele.length} Seiten (${geraet.name})`
+ (skriptfehler.length ? ` -- ${skriptfehler[0]}` : "")); + (skriptfehler.length ? ` -- ${skriptfehler[0]}` : ""));
await ctx.close();
}
} finally { } finally {
await browser.close(); await browser.close();
} }