pruef-glocke: drei Viertel der Pruefung sind nie gelaufen

8 Pruefungen standen am Ende da. Jetzt sind es 36.

SCHRITT FUER SCHRITT NACHGEMESSEN, statt der Meldung zu glauben:

  1. Drei von acht Rollen scheiterten mit „Zeitsperre nach 25 s"
     beim Warten auf start.html -- hand, linke, modi. Danach brach
     die Datei ab; alles dahinter lief nie.
  2. Nicht an der Last: allein dasselbe Bild.
  3. Was antwortet die Anmeldung im Browser? 401 ungueltig.
  4. Dieselbe Anmeldung ueber die Schnittstelle, am SELBEN laufenden
     Server: 200. Es lag also nie am Server.
  5. Der Unterschied ist die KACHEL. Es gibt zwei Anmeldeseiten:
         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.

KEIN FEHLER AM PRODUKT. Der Server ist auf einer Pruefadresse
absichtlich grosszuegig, damit Pruefungen alles testen koennen (das
steht so im Quelltext); die zwei Seiten sind die Trennung der zwei
Haeuser.

DER FEHLER WAR EIN NOTNAGEL IN DER PRUEFUNG:

    const kachel = await seite.$(`.rolle[data-rolle="${rolle}"]`)
      || await seite.$(".rolle");

Er sollte verhindern, dass ein Klick auf eine fehlende Kachel
abbricht. Seit die Kachel am 30.09. BINDEND ist (`718b267d`, auf
Filipes Wunsch), macht er aus „diese Kachel gibt es hier nicht"
etwas Schlimmeres: Er klickt irgendeine, der Server weist zu Recht
ab, und heraus kommt eine Zeitsperre nach 25 Sekunden, die wie ein
Fehler an der Glocke aussieht.

EIN NOTNAGEL, DER STILL DAS FALSCHE GREIFT, IST SCHLIMMER ALS EIN
LAUTER ABBRUCH. Jetzt wird die richtige Seite PROBIERT (nicht aus
einer Liste von Crew-Rollen gelesen -- die waere die naechste, die
beim sechsten Eintrag nicht mitwaechst), und findet sich die Kachel
auf keiner der beiden, bricht es mit Namen ab und zeigt, welche
Kacheln dastehen.

DAS IST HEUTE DER ZWEITE FALL DERSELBEN WURZEL. Bei
pruef-crew-wand-bild war es dieselbe Folgewirkung der bindenden
Kachel, nur sichtbarer. Nach jener Aenderung bin ich die Pruefungen
zum Zugang gelaufen und nicht die, die nebenbei eine Anmeldung
brauchen.

DENSELBEN NOTNAGEL GIBT ES NOCH EINMAL, in pruef-gifs. Dort zielt er
auf `creator`, und die Kachel steht auf der Agenturseite -- er
greift heute nie. Das ist Glueck und kein Entwurf, also ist er auch
dort weg.

GEPRUEFT: pruef-glocke 8 -> 36 Pruefungen, 0 Fehler, alle acht
Rollen. pruef-gifs 17 Pruefungen, 0 Fehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-10-01 23:26:01 +02:00
co-authored by Claude Opus 5
parent 775aabef38
commit e8a5d7bc7e
2 changed files with 52 additions and 4 deletions
+9 -1
View File
@@ -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]");
+43 -3
View File
@@ -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]");