diff --git a/server/pruef-modi-verborgen.mjs b/server/pruef-modi-verborgen.mjs index 8642b31f..4d59cbb1 100644 --- a/server/pruef-modi-verborgen.mjs +++ b/server/pruef-modi-verborgen.mjs @@ -702,6 +702,100 @@ console.log("\n=== 8. Aufgaben, Einträge und Dateien eines Modis ===\n"); } } +/* ---------- 8b. Was nach zwei Fehlversuchen dasteht ------------------- + ===================================================================== + + VanVan im Support, Meldung #5, zweite Runde: „Man kann sich jetzt + nur noch über die richtige Schaltfläche anmelden. Das funktioniert + jetzt. Aber wenn man sich 2x versucht über den falschen Button + anzumelden, dann kommt ein irreführender Text wo steht, dass die + Auswahl oben nicht schuld ist." + + DER SATZ WAR EINMAL RICHTIG. Auf der Crew-Wand gab es den stillen + Zugang; dort entschied die Kachel wirklich nicht, und wer alle + durchprobierte, sperrte sich nur selbst aus. Mit Abschnitt 1 oben + ist dieser Weg weggefallen -- und ab da sagte der Satz auf der + Wand, auf der jemand gerade feststeckt, das Gegenteil der Wahrheit. + + GEPRUEFT WIRD BEIDES ZUSAMMEN: dass die Kachel wirklich entscheidet + (Abschnitt 1) UND dass der Satz das sagt. Eines ohne das andere + waere wieder die Lage von gestern. + + DIE SPERRE WIRD VORHER GELEERT. Acht Fehlversuche je Adresse in + zehn Minuten -- die Abschnitte davor verbrauchen welche, und ab + dem neunten steht „Zu viele Versuche" statt des Satzes, um den es + hier geht. Das waere ein roter Haken ueber die Messumgebung, nicht + ueber das Programm. Gemessen werden soll der Hinweis, nicht die + Bremse. + -------------------------------------------------------------------- */ +console.log("\n=== 8b. Der Hinweis nach zwei Fehlversuchen ===\n"); +{ + const { chromium } = await import( + "file:///C:/Users/qciga/Documents/Obelix/Analyse/node_modules/playwright/index.mjs"); + const browser = await chromium.launch(); + try { + const satzVon = async (wand) => { + /* Die Sperre je Lauf zuruecksetzen -- siehe oben. */ + const dx = new DatabaseSync(process.env.WORKSPACE_DB); + dx.exec("DELETE FROM versuche"); + dx.close(); + + const kontext = await browser.newContext({ + viewport: { width: 390, height: 844 }, hasTouch: true, isMobile: true }); + const seite = await kontext.newPage(); + const konsole = []; + seite.on("pageerror", (e) => konsole.push("Absturz: " + e.message)); + await seite.goto(`${BASIS}/workspace/${wand}`, { waitUntil: "domcontentloaded" }); + await seite.waitForTimeout(400); + /* Irgendeine Kachel und ein Code, der zu keiner gehoert. */ + await seite.click(".rolle >> nth=0"); + const raus = []; + for (const n of [1, 2]) { + await seite.fill("#code", `FALSCH-CODE-000${n}`); + await seite.click("button[type=submit]"); + await seite.waitForTimeout(900); + raus.push((await seite.textContent("#fehler") || "").replace(/\s+/g, " ").trim()); + } + const crewKlasse = await seite.evaluate(() => + document.body.classList.contains("gate--crew")); + await kontext.close(); + return { nach1: raus[0], nach2: raus[1], crewKlasse, konsole }; + }; + + const crew = await satzVon("crew-index.html"); + const agentur = await satzVon("index.html"); + + ok(crew.crewKlasse === true && agentur.crewKlasse === false, + `zwei verschiedene Waende gemessen (crew ${crew.crewKlasse}, ` + + `agentur ${agentur.crewKlasse})`); + + /* DER EIGENTLICHE BEFUND: Der alte Satz ist weg. */ + ok(!/nicht schuld/i.test(crew.nach2), + `auf der Crew-Wand steht nicht mehr „die Auswahl oben ist nicht schuld" ` + + `(„${crew.nach2}")`); + ok(/Auswahl oben/.test(crew.nach2), + "sondern die Frage nach der Auswahl -- die dort seit Abschnitt 1 wirklich gilt"); + /* EIN SATZ FUER BEIDE WAENDE. Zwei verschiedene waeren wieder zwei + Antworten auf dieselbe Frage, und eine davon veraltet. */ + ok(crew.nach2 === agentur.nach2, + `und es ist derselbe Satz wie auf der Agenturwand (${crew.nach2 === agentur.nach2})`); + + /* GEGENPROBE: Nach dem ERSTEN Fehlversuch steht der Hinweis noch + NICHT da. Ohne sie waere „der Hinweis kommt" auch dann gruen, + wenn er immer kaeme -- und ein Hinweis, der immer kommt, ist + keiner. */ + ok(!/Auswahl oben/.test(crew.nach1), + `Gegenprobe: nach dem ersten Versuch steht er noch nicht da („${crew.nach1}")`); + ok(crew.nach1.length > 0 && /stimmt nicht/i.test(crew.nach1), + ` dort steht die kurze Absage („${crew.nach1}")`); + + ok(crew.konsole.length === 0 && agentur.konsole.length === 0, + `kein Skriptfehler auf beiden Waenden (${crew.konsole[0] || agentur.konsole[0] || "keiner"})`); + } finally { + await browser.close(); + } +} + /* ---------- 9. Die Gegenprobe ---------------------------------------- Sie steht ABSICHTLICH GANZ UNTEN: Sie haengt eine Person absichtlich aus der Regel aus. Lief sie weiter oben, tauchte diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 2c7e85b0..f4cc24bf 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`. --> - - + + - +