diff --git a/server/pruef-handy-teamdogi.mjs b/server/pruef-handy-teamdogi.mjs
index 7aef5354..6128de12 100644
--- a/server/pruef-handy-teamdogi.mjs
+++ b/server/pruef-handy-teamdogi.mjs
@@ -599,6 +599,28 @@ const ROLLEN = [
];
const BREITEN = [[390, 844, "iPhone"], [412, 915, "Android"]];
+/** Meldet sich auf der Team-Adresse an und wartet, bis die Startseite steht.
+ *
+ * EINE STELLE, ZWEI AUFRUFER (03.10.2026). Diese sechs Zeilen standen
+ * in der Schleife unten, und als ich sie fuer eine zweite Messung
+ * gebraucht habe, habe ich sie abgeschrieben -- und dabei eine
+ * aeltere Fassung erwischt: ohne `isVisible()` und mit `click()`
+ * statt `check()`. Ergebnis war ein Zeitablauf nach 30 Sekunden an
+ * der Altersfrage, die es fuer DogFather gar nicht gibt. Eine halbe
+ * Stunde fuer eine Abschrift.
+ *
+ * Die Altersfrage erscheint nur fuer die Community -- deshalb erst
+ * fragen, ob sie ueberhaupt sichtbar ist. */
+async function anmeldenAufCrew(seite, rolle, code) {
+ await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded", timeout: 20000 });
+ await seite.click(`.rolle[data-rolle="${rolle}"]`, { timeout: 8000 });
+ await seite.fill("#code", code);
+ const frage = await seite.$("#alter-ok");
+ if (frage && await frage.isVisible().catch(() => false)) await frage.check();
+ await seite.click("button[type=submit]");
+ await seite.waitForURL("**/start.html", { timeout: 20000 });
+}
+
let fehler = 0, geprueft = 0, elementeGesamt = 0, bedienbarGesamt = 0;
const probleme = [];
const melde = (t) => console.log(t);
@@ -634,14 +656,7 @@ for (const [breite, hoehe, geraet] of BREITEN) {
/* ---- Anmelden, wie ein Mensch es tut ---------------------------- */
let drin = false;
try {
- await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded", timeout: 20000 });
- await seite.click(`.rolle[data-rolle="${rolle}"]`, { timeout: 8000 });
- await seite.fill("#code", code);
- /* Die Altersfrage erscheint nur für die Community. */
- const frage = await seite.$("#alter-ok");
- if (frage && await frage.isVisible().catch(() => false)) await frage.check();
- await seite.click("button[type=submit]");
- await seite.waitForURL("**/start.html", { timeout: 20000 });
+ await anmeldenAufCrew(seite, rolle, code);
drin = true;
} catch (f) {
/* EINE GESCHEITERTE ANMELDUNG IST DER SCHLIMMSTE BEFUND -- danach
@@ -864,9 +879,86 @@ melde("\n --- Gegenprobe (beide Fehler MÜSSEN gefunden werden) ---");
await kontext.close();
}
+/* =====================================================================
+ DIE "FUER WEN"-REIHE GIBT ES AUF crew. NICHT MEHR (03.10.2026)
+
+ Filipe, mit Bildschirmfoto der Leiste "FUER WEN · Alle 3 2 ·
+ Marina 1 · Diene 0": "brauchen wir nicht auf der aufgaben seite."
+
+ WARUM DAS HIER GEPRUEFT WIRD UND NICHT IM AUFGABENBRETT: Es ist
+ DIESELBE Reihe in beiden Haeusern, und sie bleibt bei Spicy Media
+ -- dort filtern Scouts und Manager durch ihre Creator. Die
+ Gegenprobe steht deshalb schon in pruef-aufgabenbrett ("Mara sieht
+ Alle, Tili, Luna"), und nur die crew-Seite fehlte. Ohne diese
+ Zeilen waere die Trennung eine Behauptung: Niemand wuerde merken,
+ wenn die Reihe auf crew. zurueckkaeme -- oder wenn sie der Agentur
+ nebenbei mit abhanden kaeme.
+
+ DIE GEGENPROBE STEHT DANEBEN, und sie ist hier das Wichtigste:
+ "Reihe nicht da" waere auch auf einer leeren oder kaputten Seite
+ wahr. Deshalb muss die Schwester-Reihe (Alle / Heute faellig /
+ Ueberfaellig) im selben Atemzug SICHTBAR sein. Erst beides zusammen
+ heisst "die Seite steht, und genau dieses eine Stueck fehlt".
+ ===================================================================== */
+{
+ const kontext = await browser.newContext({
+ viewport: { width: 390, height: 844 }, hasTouch: true, isMobile: true,
+ ignoreHTTPSErrors: true,
+ });
+ const seite = await kontext.newPage();
+ let gemessen = null;
+ try {
+ await anmeldenAufCrew(seite, "admin", "CODE-DOGI-0001");
+ await seite.goto(BASIS + "/workspace/aufgaben.html",
+ { waitUntil: "domcontentloaded", timeout: 20000 });
+ await seite.waitForTimeout(1200);
+ gemessen = await seite.evaluate(() => {
+ const r = document.getElementById("creator-reihe");
+ const a = document.getElementById("ausschnitte");
+ return {
+ reiheDa: !!r && r.hidden === false,
+ knoepfe: document.querySelectorAll(".creator-knopf").length,
+ schwesterDa: !!a && a.hidden === false,
+ schwesterKnoepfe: a ? a.querySelectorAll("button").length : 0,
+ };
+ });
+ } catch (f) {
+ melde(` FEHL "Fuer wen"-Reihe: nicht messbar -- ${String(f.message).slice(0, 160)}`);
+ probleme.push(`"Fuer wen"-Reihe: nicht messbar (${String(f.message).slice(0, 70)})`);
+ fehler++;
+ }
+ if (gemessen) {
+ geprueft += 3;
+ const g1 = gemessen.schwesterDa && gemessen.schwesterKnoepfe >= 2;
+ const g2 = !gemessen.reiheDa;
+ const g3 = gemessen.knoepfe === 0;
+ melde("");
+ melde(` ${g1 ? "ok " : "FEHL"} die Aufgabenseite steht wirklich `
+ + `(${gemessen.schwesterKnoepfe} Knoepfe in der Ausschnitt-Reihe)`);
+ melde(` ${g2 ? "ok " : "FEHL"} und die "Fuer wen"-Reihe ist weg (sichtbar: ${gemessen.reiheDa})`);
+ melde(` ${g3 ? "ok " : "FEHL"} auch kein einzelner Knopf davon (${gemessen.knoepfe})`);
+ if (!g1) { fehler++; probleme.push('"Fuer wen": die Seite stand gar nicht -- die Messung beweist nichts'); }
+ if (!g2 || !g3) { fehler++; probleme.push('"Fuer wen"-Reihe steht auf crew. wieder da'); }
+ }
+ await kontext.close();
+}
+
await browser.close();
try { rmSync(ordner, { recursive: true, force: true }); } catch { /* egal */ }
+/* DIE BEFUNDE GEHOEREN UNTER DIE ZAHL (03.10.2026).
+
+ `probleme` wurde seit jeher gefuellt und NIE ausgegeben: Am Ende
+ stand "1 Befund" und sonst nichts. Wer das liest, weiss, DASS etwas
+ ist, aber nicht was -- und muss den ganzen Lauf noch einmal
+ anstossen, um es zu erfahren. Genau das ist mir heute passiert.
+ Ein Befund ohne Grund ist eine Fundstelle, die man ueberliest. */
+if (probleme.length) {
+ melde("");
+ melde(" --- Befunde im Einzelnen ---");
+ for (const t of probleme) melde(` · ${t}`);
+}
+
melde("");
melde(` ${geprueft} Seitenaufrufe, ${elementeGesamt} Elemente, ${bedienbarGesamt} Bedienelemente gemessen`);
melde(` ${fehler} Befund${fehler === 1 ? "" : "e"}`);
diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html
index 49cb2438..9523d704 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`. -->
-
-
+
+
-
+