diff --git a/server/pruef-bewerbung-aufgaben.mjs b/server/pruef-bewerbung-aufgaben.mjs index d0d4b02b..20405aaa 100644 --- a/server/pruef-bewerbung-aufgaben.mjs +++ b/server/pruef-bewerbung-aufgaben.mjs @@ -877,6 +877,102 @@ melde("=== 6. Am echten Bildschirm ==="); const vorher = await stand(); ok(vorher.neuZeilen >= 1 && vorher.knopf === true, `die ungelesene Antwort steht offen da, mit „Verstanden" (${vorher.neuZeilen})`); + + /* ==== HOECHSTENS DREI AUF EINMAL (03.10.2026) ============= + + GEMESSEN AM ECHTEN BESTAND, nicht geschaetzt: Ein Modi im + Haus hat NEUN beantwortete Bewerbungen liegen, alle + ungelesen. Auf dem Handy war das Band damit 922 px hoch -- + bei 844 px Fenster, also hoeher als der ganze Bildschirm + und 49 % der Seite. Das ist woertlich VanVans Satz: „Das + wird mit der Zeit unuebersichtlich." + + Mit dem Deckel sind es 566 px, und ein Griff auf „Alle + verstanden" macht daraus 46 px. + + DIE ZAHL DREI GEHOERT GEPRUEFT, nicht nur in den + Quelltext. Deshalb bekommt Frida hier vier weitere + beantwortete Bewerbungen -- erst ab vier greift der + Deckel, und ohne ihn waere diese Pruefung gruen, ohne + etwas gesehen zu haben. */ + { + const dx = new DatabaseSync(process.env.WORKSPACE_DB); + const nun = new Date().toISOString(); + for (let i = 0; i < 4; i++) { + dx.prepare(`INSERT INTO vorlagen_bewerbungen + (vorlage, kategorie, person_id, text, zustand, entscheid_text, + entschieden_von, entschieden_am, erstellt) + VALUES (?,?,?,?,?,?,?,?,?)`) + .run(`deckel-probe-${i}`, "chat", idModi, "Die auch gern.", + "angenommen", null, idHand, nun, nun); + } + dx.close(); + } + await m5.s.reload({ waitUntil: "networkidle" }); + await m5.s.waitForTimeout(1800); + const gedeckelt = await m5.s.evaluate(() => { + const band = document.querySelector('.vorlagenbrett__antwort:not([data-alt])'); + return { + zeilen: band ? band.querySelectorAll(".vorlagenbrett__antwort-zeile").length : 0, + hoch: band ? Math.round(band.getBoundingClientRect().height) : 0, + knopf: band + ? (band.querySelector(".vorlagenbrett__antwort-kopf")?.innerText || "") + .replace(/\s+/g, " ").trim() + : "", + fenster: window.innerHeight, + }; + }); + ok(gedeckelt.zeilen === 3, + `mit fuenf Ungelesenen stehen drei offen (${gedeckelt.zeilen})`); + ok(/und \d+ weitere/.test(gedeckelt.knopf), + ` und der Rest ist einen Griff entfernt („${gedeckelt.knopf}")`); + /* DER EIGENTLICHE PUNKT IST DIE HOEHE. „Drei Zeilen" waere + eine Zahl; dass das Band unter den Bildschirm passt, ist + die Aussage. */ + ok(gedeckelt.hoch > 0 && gedeckelt.hoch < gedeckelt.fenster, + ` das Band passt in den Bildschirm (${gedeckelt.hoch} px bei ` + + `${gedeckelt.fenster} px)`); + + /* AUFKLAPPEN ZEIGT ALLE -- wer nachsehen will, kann. */ + await m5.s.click(".vorlagenbrett__antwort-kopf"); + await m5.s.waitForTimeout(900); + const aufgeklappt = await m5.s.evaluate(() => { + const band = document.querySelector('.vorlagenbrett__antwort:not([data-alt])'); + return { + zeilen: band ? band.querySelectorAll(".vorlagenbrett__antwort-zeile").length : 0, + knopf: band + ? (band.querySelector(".vorlagenbrett__antwort-kopf")?.innerText || "") + .replace(/\s+/g, " ").trim() + : "", + }; + }); + ok(aufgeklappt.zeilen > 3 && /Weniger/.test(aufgeklappt.knopf), + `aufgeklappt stehen alle da (${aufgeklappt.zeilen}, „${aufgeklappt.knopf}")`); + + /* UND WIEDER ZU -- der Knopf geht in beide Richtungen. Ohne + diese Zeile koennte er ein Einwegschalter sein. */ + await m5.s.click(".vorlagenbrett__antwort-kopf"); + await m5.s.waitForTimeout(900); + ok(await m5.s.evaluate(() => document.querySelectorAll( + '.vorlagenbrett__antwort:not([data-alt]) .vorlagenbrett__antwort-zeile').length) === 3, + "und wieder zu — der Knopf geht in beide Richtungen"); + + /* DIE VIER PROBEZEILEN WIEDER WEG. Die Zeilen weiter unten + zaehlen „1 aeltere Antwort" und „2 aeltere Antworten" -- + mit den Proben waeren es sechs, und sie wuerden rot, ohne + dass etwas kaputt ist. Eine Pruefung, die den Stand fuer + die naechste verschiebt, ist schlimmer als keine. */ + { + const dx = new DatabaseSync(process.env.WORKSPACE_DB); + dx.prepare("DELETE FROM vorlagen_bewerbungen WHERE vorlage LIKE 'deckel-probe-%'") + .run(); + dx.close(); + } + await m5.s.reload({ waitUntil: "networkidle" }); + await m5.s.waitForTimeout(1800); + ok(await m5.s.evaluate(() => document.querySelectorAll( + '.vorlagenbrett__antwort:not([data-alt]) .vorlagenbrett__antwort-zeile').length) === 2, + "und die Probezeilen sind wieder weg — der Stand ist wie vorher"); ok(vorher.altKopf === null, `und es gibt noch keine aeltere Gruppe (${vorher.altKopf})`); diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 09f440b0..aad7469b 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`. --> - - + + - +