Zehn Messungen bekommen einen Finger -- und eine Zeitbombe faellt auf

Die Grundlinie der Fingerwache sinkt von 17 auf 6.

WAS UMGESTELLT WURDE

pruef-alter, pruef-countdown, pruef-gespraech, pruef-treffchat,
pruef-modi-verborgen, pruef-nachwuchs, pruef-personen-liste,
pruef-serien, pruef-team, pruef-kalender.

Alle zehn legen ein eigenes Handyfenster an; dort fehlte nur
`hasTouch`. Ohne ihn meldet der Browser einen feinen Zeiger, und
keine Regel aus `@media (pointer: coarse)` greift -- dort stehen die
44-Pixel-Beruehrziele.

JEDE EINZELN GELAUFEN, ALLE GRUEN

Diese Seiten halten die Fingerregeln also schon ein. Es hatte nur
nie jemand nachgesehen.

Vorher geprueft, wie gross jede ist: 1 bis 7 Seitenaufrufe, 1 bis 5
Fenster -- echte Einzelpruefungen. (Zum Vergleich: die Pruefung von
gestern Nacht hatte 244 Seitenaufrufe, und genau das hatte ich
vorher nicht nachgesehen.)

DIE ZEITBOMBE IN pruef-kalender

Beim Umstellen fiel sie rot aus -- zweimal, an einer Stelle, die mit
dem Finger nichts zu tun hat:

  FEHL im naechsten Monat ist kein Tag mehr "heute"

Gegen den ausgelieferten Stand gemessen: identisch rot. Nicht
meine Aenderung, sondern der Kalender.

Heute ist der 29. September. Das Oktober-Raster zeigt in seiner
ersten Zeile die letzten Septembertage mit, und einer davon IST
heute. Die Anwendung macht dabei alles richtig: `kalender.js` setzt
die Marke an `tag === daten.heute`, also am DATUM und nicht an der
Rasterposition. Genau das sollte die Pruefung beweisen -- und schlug
an, weil die Anwendung es tat.

Geschrieben wurde sie an einem Tag in der Monatsmitte. Von da an war
sie richtig, bis der Kalender sie einholte. Dasselbe Muster wie
`gate-oeffnung.mjs` am 06.09.2026 im Shop: Ein Test, der die
Wanduhr als Annahme benutzt, misst irgendwann das Gegenteil.

Gefragt wird jetzt, was gemeint war: Ein EIGENER Tag des
Folgemonats darf nie „heute" sein; ein mitgezeigter Randtag
(`data-fremd="ja"`) dagegen sehr wohl, und zwar genau dann, wenn er
es ist. Das gilt an jedem Tag des Jahres. Die Meldung nennt jetzt
beide Zahlen:

  ok  im naechsten Monat ist kein EIGENER Tag mehr "heute"
      (0 eigene, 1 mitgezeigte Randtage)

WAS UEBRIG BLEIBT: SECHS SCHWERE FAELLE

pruef-befinden, pruef-notizen, pruef-teamlage-karten,
pruef-terminregel, pruef-werdegang, pruef-grosscheck.

Dort schaltet `setViewportSize` mitten im Ablauf auf Handyformat um
-- und der Finger laesst sich nachtraeglich nicht setzen, er gehoert
zum Kontext. Jeder Fall braucht einen eigenen Kontext samt
Anmeldung: Umbau, nicht Einzeiler.

`pruef-grosscheck` bleibt unangetastet, bis Filipe einen Lauf
freigibt. Eine Aenderung, die ich nicht pruefen darf, liefere ich
nicht aus.

GEPRUEFT
  alle zehn einzeln: EXIT 0, keine FEHL-Zeile
  pruef-kalender     EXIT 0 (vorher 2 Fehlschlaege, auch auf HEAD)
  pruef-fingermass   3 / 0, Grundlinie 6
This commit is contained in:
2026-09-29 14:51:52 +02:00
parent 59b2a6d0e5
commit d5e873d597
11 changed files with 96 additions and 13 deletions
+35 -2
View File
@@ -192,6 +192,12 @@ const lesen = (seite) => seite.evaluate(() => ({
kwSpalten: document.querySelectorAll(".k-kw").length,
kwWerte: [...document.querySelectorAll(".k-kw")].map((k) => k.textContent),
heuteZellen: document.querySelectorAll('.k-tag[data-heute="ja"]').length,
/* Ein Monatsraster zeigt die Randtage der Nachbarmonate mit
(`data-fremd="ja"`). Fuer die Frage „wandert die Heute-Marke
mit der Ansicht?" zaehlen nur die EIGENEN Tage -- siehe die
Pruefung beim Blaettern. */
heuteEigen: document.querySelectorAll('.k-tag[data-heute="ja"]:not([data-fremd="ja"])').length,
heuteFremd: document.querySelectorAll('.k-tag[data-heute="ja"][data-fremd="ja"]').length,
feiertagZellen: document.querySelectorAll('.k-tag[data-feiertag="ja"]').length,
fremdZellen: document.querySelectorAll('.k-tag[data-fremd="ja"]').length,
/* Eintraege */
@@ -344,7 +350,30 @@ for (const [breite, wie] of [[1440, "Computer"], [390, "Handy"]]) {
await seite.waitForTimeout(400);
const weiter = await lesen(seite);
ok(weiter.zeitraum !== vorher, `vorwärts blättern wechselt den Monat (${vorher} → ${weiter.zeitraum})`);
ok(weiter.heuteZellen === 0, "im nächsten Monat ist kein Tag mehr \"heute\"");
/* DIESE PRUEFUNG WAR EINE ZEITBOMBE (entschärft 29.09.2026).
Sie stand auf `weiter.heuteZellen === 0` und war jahrelang grün
-- bis heute. Am 29. September zeigt das Oktober-Raster in
seiner ersten Zeile die letzten Septembertage mit, und einer
davon IST heute. Die Anwendung macht dabei alles richtig:
`kalender.js` setzt die Marke an `tag === daten.heute`, also am
Datum und nicht an der Rasterposition. Genau das sollte die
Pruefung ja beweisen -- und schlug an, weil die Anwendung es
tat.
Geschrieben wurde sie an einem Tag in der Monatsmitte. Von da
an war sie richtig, bis der Kalender sie einholte, und dann
kostete der Fehlalarm Vertrauen in den ganzen Satz. Dasselbe
Muster wie `gate-oeffnung.mjs` am 06.09.2026 im Shop.
Gefragt wird jetzt, was gemeint war: Die Marke darf NICHT an
der Ansicht haengen. Ein EIGENER Tag des Folgemonats darf nie
„heute" sein -- ein mitgezeigter Randtag des laufenden Monats
dagegen sehr wohl, und zwar genau dann, wenn er es ist. Das
gilt an jedem Tag des Jahres. */
ok(weiter.heuteEigen === 0,
`im nächsten Monat ist kein EIGENER Tag mehr "heute" `
+ `(${weiter.heuteEigen} eigene, ${weiter.heuteFremd} mitgezeigte Randtage)`);
await seite.click("#heute-knopf");
await seite.waitForTimeout(400);
const zurueck = await lesen(seite);
@@ -762,7 +791,11 @@ console.log("\n=== Die gerechneten Tage");
======================================================================= */
console.log("\n=== Am Handy wird aus einer Pille ein Punkt");
{
const kPunkt = await browser.newContext({ viewport: { width: 390, height: 1100 } });
/* MIT FINGER. Ohne `hasTouch` meldet der Browser einen feinen
Zeiger, und keine Regel aus `@media (pointer: coarse)` greift --
dort stehen die 44-Pixel-Beruehrziele. Siehe pruef-fingermass.mjs. */
const kPunkt = await browser.newContext({ viewport: { width: 390, height: 1100 },
hasTouch: true, isMobile: true });
const sPunkt = await anmelden(kPunkt, "admin", "CODE-DOGI-0001");
try {
await sPunkt.goto(BASIS + "/workspace/kalender.html", { waitUntil: "networkidle" });