diff --git a/server/pruef-gifs.mjs b/server/pruef-gifs.mjs index a2718649..4eb07d27 100644 --- a/server/pruef-gifs.mjs +++ b/server/pruef-gifs.mjs @@ -231,7 +231,15 @@ try { const k2 = await browser.newContext({ viewport: { width: 1200, height: 900 } }); const s2 = await k2.newPage(); await s2.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded" }); - const kachel = await s2.$('.rolle[data-rolle="creator"]') || await s2.$(".rolle"); + /* KEIN NOTNAGEL AUF IRGENDEINE KACHEL (01.10.2026). Hier stand + `|| await s2.$(".rolle")`. Er greift heute nie -- die + Creator-Kachel steht auf der Agenturseite. Dieselbe Zeile hat in + pruef-glocke drei Rollen unpruefbar gemacht: Seit die Kachel + bindend ist, wird eine falsch geklickte Anmeldung zu Recht + abgewiesen, und heraus kam eine Zeitsperre, die wie ein Fehler + am Produkt aussah. */ + const kachel = await s2.$('.rolle[data-rolle="creator"]'); + if (!kachel) throw new Error('Kachel "creator" steht nicht auf der Anmeldeseite'); if (kachel) await kachel.click(); await s2.fill("#code", "CODE-CREA-0001"); await s2.click("button[type=submit]"); diff --git a/server/pruef-glocke.mjs b/server/pruef-glocke.mjs index f9fbedbf..4431fc4c 100644 --- a/server/pruef-glocke.mjs +++ b/server/pruef-glocke.mjs @@ -220,9 +220,49 @@ async function anmelden(ctx, rolle, code) { Seit sie alle acht ansieht, waere `click` auf eine Kachel, die es nicht gibt, ein Abbruch -- und der saehe aus wie ein Fehler an der Glocke, obwohl er einer an der Pruefung waere. */ - const kachel = await seite.$(`.rolle[data-rolle="${rolle}"]`) - || await seite.$(".rolle"); - if (!kachel) throw new Error("keine einzige Rollenkachel auf der Anmeldeseite"); + /* ==== DIE RICHTIGE ANMELDESEITE (01.10.2026) ===================== + + Es gibt ZWEI, und sie gehoeren zu den zwei Haeusern: + + workspace/index.html spicy, admin, manager, scout, creator + workspace/crew-index.html admin, hand, linke, modi, gast + + Auf 127.0.0.1 kommt die Agenturseite. Wer sich als `hand`, + `linke` oder `modi` anmelden will, findet seine Kachel dort + nicht. + + HIER STAND EIN NOTNAGEL: + + ... || await seite.$(".rolle"); + + Er sollte verhindern, dass ein Klick auf eine fehlende Kachel + abbricht. Seit die Kachel am 30.09. BINDEND ist, macht er aus + „diese Kachel gibt es hier nicht" etwas Schlimmeres: Er klickt + irgendeine, der Server weist die Anmeldung zu Recht ab (401), + und heraus kommt eine Zeitsperre nach 25 Sekunden, die wie ein + Fehler an der Glocke aussieht. Drei von acht Rollen waren so + unpruefbar, ohne dass es jemandem auffiel. + + Gemessen: Dieselbe Anmeldung ueber die Schnittstelle antwortet + mit 200. Es lag nie am Server. + + Die Seite wird PROBIERT, nicht aus einer Liste gelesen -- eine + Liste von Crew-Rollen waere die naechste, die beim sechsten + Eintrag nicht mitwaechst. */ + let kachel = await seite.$(`.rolle[data-rolle="${rolle}"]`); + if (!kachel) { + await seite.goto(`${BASIS}/workspace/crew-index.html`, + { waitUntil: "domcontentloaded" }); + kachel = await seite.$(`.rolle[data-rolle="${rolle}"]`); + } + if (!kachel) { + /* LAUT ABBRECHEN STATT IRGENDEINE NEHMEN. Diese Meldung nennt + die Rolle; die Zeitsperre von vorher nannte nur eine Adresse, + auf die man nicht wartet. */ + const da = await seite.$$eval(".rolle", (ks) => ks.map((k) => k.dataset.rolle)); + throw new Error(`Kachel "${rolle}" gibt es auf keiner der beiden` + + ` Anmeldeseiten. Hier stehen: ${da.join(", ") || "keine"}`); + } await kachel.click(); await seite.fill("#code", code); await seite.click("button[type=submit]");