diff --git a/server/mess-alle-einzelsicht.mjs b/server/mess-alle-einzelsicht.mjs index f8d00e79..0d6be566 100644 --- a/server/mess-alle-einzelsicht.mjs +++ b/server/mess-alle-einzelsicht.mjs @@ -172,7 +172,7 @@ try { am 06.09. die Kopfleiste gescheitert. 1280 px ist der kleinste Rechner, an dem noch jemand arbeitet. */ for (const [wie, breite, hoehe] of [["handy", 412, 1400], ["computer", 1280, 1600]]) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); await kontext.addCookies(keks.split("; ").map((k) => { const [n, ...r] = k.split("="); return { name: n, value: r.join("="), domain: CREW, path: "/" }; diff --git a/server/mess-buehne.mjs b/server/mess-buehne.mjs index 8fe04dc2..4e5f839b 100644 --- a/server/mess-buehne.mjs +++ b/server/mess-buehne.mjs @@ -200,7 +200,7 @@ const browser = await pw.chromium.launch({ ein Messfehler, der wie ein Programmfehler aussah. */ async function alsWer(rolle, breite, hoehe) { const kontext = await browser.newContext({ - viewport: { width: breite, height: hoehe }, + viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860, ignoreHTTPSErrors: true, permissions: ["camera", "microphone"], }); diff --git a/server/mess-chat-liste.mjs b/server/mess-chat-liste.mjs index 20cb3972..42c114f8 100644 --- a/server/mess-chat-liste.mjs +++ b/server/mess-chat-liste.mjs @@ -165,7 +165,7 @@ const { chromium } = await import( const browser = await chromium.launch(); try { for (const [wie, breite, hoehe] of [["breit", 1280, 900], ["handy", 390, 860]]) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); await kontext.addCookies(keksIch.split("; ").map((k) => { const [name, ...rest] = k.split("="); return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" }; diff --git a/server/mess-dialog-ausgang.mjs b/server/mess-dialog-ausgang.mjs index 563cb4b4..0cdba19e 100644 --- a/server/mess-dialog-ausgang.mjs +++ b/server/mess-dialog-ausgang.mjs @@ -151,7 +151,7 @@ try { die nur den guenstigsten Fall kennt, sagt genau dann "in Ordnung", wenn der Nutzer schon feststeckt. */ for (const [wie, breite, hoehe] of GROESSEN) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); await kontext.addCookies(keks.split("; ").map((k) => { const [n, ...r] = k.split("="); return { name: n, value: r.join("="), domain: CREW, path: "/" }; diff --git a/server/mess-eingang-optik.mjs b/server/mess-eingang-optik.mjs index 383fd929..684f7777 100644 --- a/server/mess-eingang-optik.mjs +++ b/server/mess-eingang-optik.mjs @@ -137,7 +137,7 @@ const browser = await pw.chromium.launch({ }); try { for (const [wie, breite, hoehe] of [["computer", 1280, 1100], ["handy", 412, 915]]) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); await kontext.addCookies(keks.split("; ").map((k) => { const [n, ...r] = k.split("="); return { name: n, value: r.join("="), domain: CREW, path: "/" }; diff --git a/server/mess-entwicklung-kacheln.mjs b/server/mess-entwicklung-kacheln.mjs index 51af6a59..9da00c66 100644 --- a/server/mess-entwicklung-kacheln.mjs +++ b/server/mess-entwicklung-kacheln.mjs @@ -168,7 +168,7 @@ const { chromium } = await import( const browser = await chromium.launch(); try { for (const [wie, breite, hoehe] of [["breit", 1280, 1000], ["handy", 390, 1100]]) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); await kontext.addCookies(keks.split("; ").map((k) => { const [name, ...rest] = k.split("="); return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" }; diff --git a/server/mess-startseite.mjs b/server/mess-startseite.mjs index 3e034f48..1034282d 100644 --- a/server/mess-startseite.mjs +++ b/server/mess-startseite.mjs @@ -124,7 +124,7 @@ try { for (const p of leute) { const keks = await anmelden(p.kachel, p.code); if (!keks) { console.log(` !! ${p.rolle}: Anmeldung fehlgeschlagen`); continue; } - const kontext = await browser.newContext({ viewport: { width: BREITE, height: HOEHE } }); + const kontext = await browser.newContext({ viewport: { width: BREITE, height: HOEHE }, hasTouch: BREITE <= 860 }); await kontext.addCookies(keks.split("; ").map((k) => { const [name, ...rest] = k.split("="); return { name, value: rest.join("="), domain: "127.0.0.1", path: "/" }; diff --git a/server/mess-support-runde.mjs b/server/mess-support-runde.mjs index b006a582..220d62a0 100644 --- a/server/mess-support-runde.mjs +++ b/server/mess-support-runde.mjs @@ -150,7 +150,7 @@ const browser = await pw.chromium.launch({ }); async function blicken(name, keks, breite, hoehe) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); await kontext.addCookies(keks.split("; ").map((k) => { const [n, ...r] = k.split("="); return { name: n, value: r.join("="), domain: CREW, path: "/" }; diff --git a/server/mess-support-ueberstand.mjs b/server/mess-support-ueberstand.mjs index 88873d03..b74441e8 100644 --- a/server/mess-support-ueberstand.mjs +++ b/server/mess-support-ueberstand.mjs @@ -81,7 +81,7 @@ const pw = await import( const browser = await pw.chromium.launch(); for (const [wie, breite] of [["Handy", 390], ["Tablet quer", 1024], ["Laptop", 1280]]) { - const kontext = await browser.newContext({ viewport: { width: breite, height: 900 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 900 }, hasTouch: breite <= 860 }); await kontext.addCookies(keks.split("; ").map((k) => { const [n, ...r] = k.split("="); return { name: n, value: r.join("="), domain: "127.0.0.1", path: "/" }; diff --git a/server/mess-vanvan-karte.mjs b/server/mess-vanvan-karte.mjs index e00b05ed..c3fda527 100644 --- a/server/mess-vanvan-karte.mjs +++ b/server/mess-vanvan-karte.mjs @@ -181,7 +181,7 @@ const { chromium } = await import( const browser = await chromium.launch(); async function alsWer(keks, breite = 1280, hoehe = 1000) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); await kontext.addCookies(keks.split("; ").filter(Boolean).map((z) => { const [n, ...r] = z.split("="); return { name: n, value: r.join("="), domain: "127.0.0.1", path: "/" }; diff --git a/server/pruef-abbrechen-optik.mjs b/server/pruef-abbrechen-optik.mjs index f86b30ae..1c63769d 100644 --- a/server/pruef-abbrechen-optik.mjs +++ b/server/pruef-abbrechen-optik.mjs @@ -144,7 +144,7 @@ const browser = await pw.chromium.launch(); genauso aus wie "der Server antwortet nicht". */ const konsole = []; async function alsRolle(rolle, code, breite = 1280) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 1000 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 1000 }, hasTouch: breite <= 860 }); const seite = await ctx.newPage(); seite.on("pageerror", (f) => konsole.push(`pageerror: ${f.message}`)); seite.on("console", (m) => { diff --git a/server/pruef-aufgabenbrett.mjs b/server/pruef-aufgabenbrett.mjs index 7a259b77..099a6685 100644 --- a/server/pruef-aufgabenbrett.mjs +++ b/server/pruef-aufgabenbrett.mjs @@ -234,7 +234,7 @@ const { chromium } = await import( const browser = await chromium.launch(); async function seiteAls(rolle, code, breite = 1280) { - const kontext = await browser.newContext({ viewport: { width: breite, height: 1100 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 1100 }, hasTouch: breite <= 860 }); const konsole = []; const seite = await kontext.newPage(); seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text()); }); diff --git a/server/pruef-bewerbung-aufgaben.mjs b/server/pruef-bewerbung-aufgaben.mjs index 33d16058..828cd8ea 100644 --- a/server/pruef-bewerbung-aufgaben.mjs +++ b/server/pruef-bewerbung-aufgaben.mjs @@ -494,7 +494,7 @@ melde("=== 6. Am echten Bildschirm ==="); const meckern = []; async function seiteAls(rolle, code, breite = 1280) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 1000 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 1000 }, hasTouch: breite <= 860 }); const s2 = await ctx.newPage(); s2.on("pageerror", (e) => meckern.push(`${rolle}: ${String(e).slice(0, 110)}`)); s2.on("console", (m) => { diff --git a/server/pruef-browser.mjs b/server/pruef-browser.mjs index ae123dfc..370e9d6a 100644 --- a/server/pruef-browser.mjs +++ b/server/pruef-browser.mjs @@ -186,7 +186,7 @@ for (const [motor, wie, breite, hoehe] of MASCHINEN) { } maschinenGelaufen++; - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); const konsole = []; seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text().slice(0, 90)); }); diff --git a/server/pruef-chat-anhaenge.mjs b/server/pruef-chat-anhaenge.mjs index 6e53493a..0faedda0 100644 --- a/server/pruef-chat-anhaenge.mjs +++ b/server/pruef-chat-anhaenge.mjs @@ -106,7 +106,7 @@ const browser = await pw.chromium.launch({ }); async function alsRolle(rolle, code, breite = 1280) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 900 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 900 }, hasTouch: breite <= 860 }); const seite = await ctx.newPage(); const konsole = []; const rauschen = []; diff --git a/server/pruef-chat-ausbau.mjs b/server/pruef-chat-ausbau.mjs index e0448845..a3b72c1a 100644 --- a/server/pruef-chat-ausbau.mjs +++ b/server/pruef-chat-ausbau.mjs @@ -85,7 +85,7 @@ const browser = await pw.chromium.launch(); async function alsRolle(rolle, code, breite = 1280) { const ctx = await browser.newContext({ - viewport: { width: breite, height: 900 }, + viewport: { width: breite, height: 900 }, hasTouch: breite <= 860, permissions: ["clipboard-read", "clipboard-write"], }); const seite = await ctx.newPage(); diff --git a/server/pruef-content-ansicht.mjs b/server/pruef-content-ansicht.mjs index 4d505854..db6adf82 100644 --- a/server/pruef-content-ansicht.mjs +++ b/server/pruef-content-ansicht.mjs @@ -145,7 +145,7 @@ const lesen = (seite) => seite.evaluate(() => ({ for (const [breite, wie] of [[1440, "Computer"], [390, "Handy"]]) { console.log(`\n=== DogFather · ${wie}`); - const kontext = await browser.newContext({ viewport: { width: breite, height: 1100 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 1100 }, hasTouch: breite <= 860 }); const konsole = []; const seite = await seiteFuer(kontext, "admin", "CODE-DOGI-0001"); seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text()); }); diff --git a/server/pruef-crew-wand-bild.mjs b/server/pruef-crew-wand-bild.mjs index f521d23e..d2bd3fbf 100644 --- a/server/pruef-crew-wand-bild.mjs +++ b/server/pruef-crew-wand-bild.mjs @@ -81,7 +81,7 @@ for (const geraet of [ { name: "alt-handy", breite: 412, hoehe: 915, alt: true }, ]) { const ctx = await browser.newContext({ - viewport: { width: geraet.breite, height: geraet.hoehe }, + viewport: { width: geraet.breite, height: geraet.hoehe }, hasTouch: geraet.breite <= 860, deviceScaleFactor: 1, }); const seite = await ctx.newPage(); diff --git a/server/pruef-dabei-optik.mjs b/server/pruef-dabei-optik.mjs index 76c8f11e..dabc4f6e 100644 --- a/server/pruef-dabei-optik.mjs +++ b/server/pruef-dabei-optik.mjs @@ -126,7 +126,7 @@ const browser = await pw.chromium.launch(); * geraten statt nachgesehen, das Formular nahm den Code nicht an, und * waitForURL wartete auf eine Adresse, die nie kam. */ async function alsRolle(rolle, code, breite = 1280) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 900 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 900 }, hasTouch: breite <= 860 }); const seite = await ctx.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "networkidle" }); await seite.click(`.rolle[data-rolle="${rolle}"]`); @@ -221,12 +221,30 @@ console.log("\n=== Die Wahl aus Sicht von DogFather ==="); const vorher = await seite.$eval("#dabei-wahl .k-dabei__knopf .k-dabei__haken", (h) => getComputedStyle(h).opacity); await seite.click("#dabei-wahl .k-dabei__knopf"); - /* ERST DIE ÜBERBLENDUNG ABWARTEN. Beim ersten Lauf stand hier - "0 → 0" und sah aus wie ein defektes Häkchen -- gemessen wurde - aber mitten in der 0,16-Sekunden-Blende, als es tatsächlich noch - unsichtbar war. Nicht der Code war falsch, sondern der Zeitpunkt - der Messung. 250 ms sind reichlich über den 160. */ - await seite.waitForTimeout(250); + /* AUF DEN ZUSTAND WARTEN, NICHT AUF DIE UHR (01.10.2026). + + Hier stand `waitForTimeout(250)`, mit dieser Begründung: Beim + ersten Lauf stand „0 → 0" und sah aus wie ein defektes Häkchen + -- gemessen wurde aber mitten in der 0,16-Sekunden-Blende. + „250 ms sind reichlich über den 160." + + Auf einem Rechner, auf dem nebenher vier Browser messen, sind + sie es nicht. Gemessen: Mit vier parallelen Prüfungen meldete + diese Zeile wieder „0 → 0", allein gestartet „0 → 1". Damit war + sie eine Zeitbombe -- grün, solange nichts anderes läuft, und + rot im Gesamtlauf, also genau dann, wenn niemand sie einzeln + nachstellen kann. + + Eine Wartezeit ist eine Annahme über den Rechner. Gewartet wird + deshalb auf das, worauf es ankommt. Läuft die Frist ab, fällt + die Prüfung mit dem ECHTEN Wert um und nicht mit einem + Messfehler -- deshalb wird der Abbruch hier geschluckt und die + Behauptung darunter entscheidet. */ + await seite.waitForFunction( + () => Number(getComputedStyle( + document.querySelector("#dabei-wahl .k-dabei__knopf .k-dabei__haken")).opacity) > 0.9, + null, { timeout: 5000 }, + ).catch(() => { /* der Wert darunter sagt dann, was wirklich da war */ }); const nachher = await seite.$eval("#dabei-wahl .k-dabei__knopf .k-dabei__haken", (h) => getComputedStyle(h).opacity); ok(Number(vorher) < 0.1 && Number(nachher) > 0.9, diff --git a/server/pruef-erwaehnung.mjs b/server/pruef-erwaehnung.mjs index ec8ea69c..44fac36d 100644 --- a/server/pruef-erwaehnung.mjs +++ b/server/pruef-erwaehnung.mjs @@ -639,7 +639,7 @@ const pw = await import("file:///C:/Users/qciga/Documents/Obelix/Analyse/node_mo const browser = await pw.chromium.launch(); try { async function alsRolle(rolle, code, breite = 1280, wohin = `chat.html?raum=${raumId}`) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 900 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 900 }, hasTouch: breite <= 860 }); const seite = await ctx.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "networkidle" }); await seite.click(`.rolle[data-rolle="${rolle}"]`); diff --git a/server/pruef-fingermass.mjs b/server/pruef-fingermass.mjs index 677117e6..4f7ee760 100644 --- a/server/pruef-fingermass.mjs +++ b/server/pruef-fingermass.mjs @@ -231,8 +231,15 @@ if (blind > GRUNDLINIE) { Sie bekommt eine eigene Grundlinie, damit sie weder stillschweigend durchgeht noch die echte Zahl verfaelscht. - NEUNUNDDREISSIG, GEMESSEN AM 01.10.2026 -- und die Zahl ist - ernst. Stichprobe: + NEUNUNDDREISSIG WAREN ES AM 01.10.2026 MITTAGS. Siebenunddreissig + davon haben noch am selben Tag ihren Finger bekommen und sind + einzeln nachgelaufen; uebrig bleiben ZWEI, beide in + pruef-grosscheck.mjs. Die Aenderung dort waere ein Zweizeiler -- + sie zu pruefen hiesse, 206 Seiten ueber vier Rollen laufen zu + lassen, und das braucht Filipes Zusage. Eine Aenderung, die ich + nicht pruefen darf, liefere ich nicht aus. + + SO SAH ES VORHER AUS, als Beleg dafuer, dass die Zahl ernst war: mess-chat-liste.mjs ["handy", 390, 860] ohne hasTouch pruef-material.mjs ein Handy-Fall ohne hasTouch @@ -241,20 +248,19 @@ if (blind > GRUNDLINIE) { MAUSZEIGER vermessen. Genau so hat pruef-breiten heute drei Befunde gemeldet, die es auf keinem Telefon gibt. - WARUM SIE HIER ALS GRUNDLINIE STEHT UND NICHT ALS 39 FEHLER: - Eine Warnung, die bei jedem Lauf neununddreissigmal kommt, wird - weggeklickt und nimmt die echte mit. Die Zahl ist festgehalten, - sie darf nur SINKEN, und jede neue faellt sofort auf. Abgearbeitet - wird sie Datei fuer Datei -- jede einzeln, und jede mit einem - Lauf danach, denn bei pruef-breiten sind durch den Finger drei - Befunde verschwunden und haetten genauso gut drei neue - auftauchen koennen. */ -const UNKLAR_GRUNDLINIE = 39; + WIE BEI DER ANDEREN GRUNDLINIE GILT: Die Zahl muss GENAU + stimmen. Waechst sie, ist eine neue Messung dazugekommen, die am + Telefon mit Mauszeiger misst. Sinkt sie, gehoert sie hier + gesenkt -- sonst deckt sie Platz fuer die naechste. Ich hatte sie + kurz auf „hoechstens" gestellt und damit genau dieses Loch + gebaut, eine Stunde nachdem ich die Begruendung oben gelesen + hatte. */ +const UNKLAR_GRUNDLINIE = 2; if (unklare.length) console.log(" ohne Zahl und ohne Finger: " + unklare.join(", ")); -ok(unklar <= UNKLAR_GRUNDLINIE, - unklar <= UNKLAR_GRUNDLINIE +ok(unklar === UNKLAR_GRUNDLINIE, + unklar === UNKLAR_GRUNDLINIE ? `${unklar} Fenster, deren Breite aus einer Variablen kommt und bei denen ` - + `kein hasTouch danebensteht — Grundlinie ${UNKLAR_GRUNDLINIE}` + + `kein hasTouch danebensteht — unveraendert zur Grundlinie ${UNKLAR_GRUNDLINIE}` : `${unklar} Fenster mit Variable und ohne hasTouch (Grundlinie ` + `${UNKLAR_GRUNDLINIE}). Dort laesst sich nicht sagen, ob am Telefon gemessen ` + "wird — und genau so ist am 01.10. pruef-breiten durchgerutscht. " diff --git a/server/pruef-formulare.mjs b/server/pruef-formulare.mjs index 959986bf..91983b65 100644 --- a/server/pruef-formulare.mjs +++ b/server/pruef-formulare.mjs @@ -93,7 +93,7 @@ const FORMULARE = [ for (const [breite, wie] of [[1280, "Computer"], [390, "Handy"]]) { console.log(`\n=== ${wie} (${breite}px)`); - const kontext = await browser.newContext({ viewport: { width: breite, height: 1000 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 1000 }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded" }); await seite.click('.rolle[data-rolle="admin"]'); diff --git a/server/pruef-freie-namen.mjs b/server/pruef-freie-namen.mjs index 95649a2a..87f575d0 100644 --- a/server/pruef-freie-namen.mjs +++ b/server/pruef-freie-namen.mjs @@ -86,7 +86,7 @@ const { chromium } = await import( const browser = await chromium.launch(); async function anmelden(rolle, code, breite = 1440) { - const kontext = await browser.newContext({ viewport: { width: breite, height: 1000 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 1000 }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded" }); await seite.click(`.rolle[data-rolle="${rolle}"]`); diff --git a/server/pruef-handy.mjs b/server/pruef-handy.mjs index 48951cfe..862b1e35 100644 --- a/server/pruef-handy.mjs +++ b/server/pruef-handy.mjs @@ -589,7 +589,7 @@ console.log("\n=== Ring und Uhr stehen mittig (alle Rollen)"); for (const [breite, hoehe] of KOPF_GERAETE) { for (const [rolle, code] of [["admin", "CODE-DOGI-0001"], ["spicy", "CODE-SPIC-0001"], ["manager", "CODE-MANA-0001"], ["scout", "CODE-SCOU-0001"], ["creator", "CODE-ANNA-0001"]]) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded" }); await seite.click(`.rolle[data-rolle="${rolle}"]`); diff --git a/server/pruef-kachelraster.mjs b/server/pruef-kachelraster.mjs index dca66f8f..a865c669 100644 --- a/server/pruef-kachelraster.mjs +++ b/server/pruef-kachelraster.mjs @@ -411,7 +411,7 @@ try { for (const breite of [320, 360, 390]) { const k2 = await browser.newContext({ - viewport: { width: breite, height: 900 }, reducedMotion: "reduce", + viewport: { width: breite, height: 900 }, hasTouch: breite <= 860, reducedMotion: "reduce", }); await k2.addCookies(keksBreite.split("; ").map((k) => { const [name, ...rest] = k.split("="); diff --git a/server/pruef-kalender.mjs b/server/pruef-kalender.mjs index 494bb0b7..6086a147 100644 --- a/server/pruef-kalender.mjs +++ b/server/pruef-kalender.mjs @@ -261,7 +261,7 @@ const lesen = (seite) => seite.evaluate(() => ({ for (const [breite, wie] of [[1440, "Computer"], [390, "Handy"]]) { console.log(`\n=== ${wie} (${breite}px)`); - const kontext = await browser.newContext({ viewport: { width: breite, height: 1100 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 1100 }, hasTouch: breite <= 860 }); const konsole = []; const seite = await anmelden(kontext, "admin", "CODE-DOGI-0001"); seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text()); }); diff --git a/server/pruef-kopf-messen.mjs b/server/pruef-kopf-messen.mjs index b10fe4e3..d56390ac 100644 --- a/server/pruef-kopf-messen.mjs +++ b/server/pruef-kopf-messen.mjs @@ -152,7 +152,7 @@ const SEITEN = ["uebersicht.html", "teilen.html", "bewerben.html", Die drei schmalen Breiten bleiben: Dort ist der Platz knapp, und dort ist die Leiste im September schon einmal zerbrochen. */ for (const breite of [320, 390, 430, 1366]) { - const kontext = await browser.newContext({ viewport: { width: breite, height: 844 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 844 }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded" }); await seite.click('.rolle[data-rolle="admin"]'); diff --git a/server/pruef-material.mjs b/server/pruef-material.mjs index dd46b1e0..bf2e0813 100644 --- a/server/pruef-material.mjs +++ b/server/pruef-material.mjs @@ -816,7 +816,7 @@ melde("=== 13. Am echten Bildschirm ==="); const meckern = []; async function seiteAls(rolle, code, breite) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 950 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 950 }, hasTouch: breite <= 860 }); const s2 = await ctx.newPage(); s2.on("pageerror", (e) => meckern.push(`${rolle}: Absturz ${String(e).slice(0, 120)}`)); s2.on("console", (m) => { diff --git a/server/pruef-neue-seiten.mjs b/server/pruef-neue-seiten.mjs index 1ca01f92..1f1f0a46 100644 --- a/server/pruef-neue-seiten.mjs +++ b/server/pruef-neue-seiten.mjs @@ -412,7 +412,7 @@ const UEBERBREIT = `(() => { Weg wie sonst (/api/anmelden), nur die Maske bleibt aussen vor. Was die Seite danach zeigt, entscheidet weiterhin der Server. */ async function ansehen(name, pfad, code, breite, hoehe, keks = null, merkmal = null) { - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); const konsole = []; seite.on("console", (m) => { diff --git a/server/pruef-personen-formular.mjs b/server/pruef-personen-formular.mjs index af0cfc27..b593c8e6 100644 --- a/server/pruef-personen-formular.mjs +++ b/server/pruef-personen-formular.mjs @@ -91,7 +91,7 @@ const { chromium } = await import( const browser = await chromium.launch(); async function anmelden(rolle, code, breite = 1440) { - const kontext = await browser.newContext({ viewport: { width: breite, height: 1000 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 1000 }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "domcontentloaded" }); await seite.click(`.rolle[data-rolle="${rolle}"]`); diff --git a/server/pruef-personen-kachel.mjs b/server/pruef-personen-kachel.mjs index fac58aac..f4b03038 100644 --- a/server/pruef-personen-kachel.mjs +++ b/server/pruef-personen-kachel.mjs @@ -91,7 +91,7 @@ const browser = await chromium.launch(); const konsole = []; async function alsDogi(breite = 1440) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 1100 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 1100 }, hasTouch: breite <= 860 }); const s = await ctx.newPage(); s.on("pageerror", (f) => konsole.push("Absturz: " + f.message)); s.on("console", (m) => { if (m.type() === "error") konsole.push("Konsole: " + m.text()); }); diff --git a/server/pruef-protokoll-klappe.mjs b/server/pruef-protokoll-klappe.mjs index aaab6ad5..a3e45817 100644 --- a/server/pruef-protokoll-klappe.mjs +++ b/server/pruef-protokoll-klappe.mjs @@ -127,7 +127,7 @@ async function pruefe(seite, name, pfad, liste, knopf, text) { for (const [breite, wie] of [[1440, "Computer"], [390, "Handy"]]) { console.log(`\n=== ${wie}`); - const kontext = await browser.newContext({ viewport: { width: breite, height: 900 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 900 }, hasTouch: breite <= 860 }); const seite = await anmelden(kontext); const konsole = []; seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text()); }); diff --git a/server/pruef-start-ansicht.mjs b/server/pruef-start-ansicht.mjs index 134fbfb7..7c16d454 100644 --- a/server/pruef-start-ansicht.mjs +++ b/server/pruef-start-ansicht.mjs @@ -206,7 +206,7 @@ const lesen = (seite) => seite.evaluate(() => ({ for (const [breite, wie] of [[1440, "Computer"], [390, "Handy"]]) { console.log(`\n=== DogFather · ${wie}`); - const kontext = await browser.newContext({ viewport: { width: breite, height: 1200 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 1200 }, hasTouch: breite <= 860 }); const konsole = []; const seite = await anmelden(kontext, "admin", "CODE-DOGI-0001"); seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text()); }); diff --git a/server/pruef-tagesblick.mjs b/server/pruef-tagesblick.mjs index e167148a..ad0d5376 100644 --- a/server/pruef-tagesblick.mjs +++ b/server/pruef-tagesblick.mjs @@ -121,7 +121,7 @@ const pw = await import("file:///C:/Users/qciga/Documents/Obelix/Analyse/node_mo const browser = await pw.chromium.launch(); async function alsRolle(rolle, code, breite = 1280) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 1000 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 1000 }, hasTouch: breite <= 860 }); const seite = await ctx.newPage(); await seite.goto(BASIS + "/workspace/", { waitUntil: "networkidle" }); await seite.click(`.rolle[data-rolle="${rolle}"]`); diff --git a/server/pruef-textform.mjs b/server/pruef-textform.mjs index 0b0eee7c..5706e539 100644 --- a/server/pruef-textform.mjs +++ b/server/pruef-textform.mjs @@ -176,7 +176,7 @@ const browser = await pw.chromium.launch(); const seitenFehler = []; async function alsRolle(rolle, code, wohin, breite = 1280) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 900 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 900 }, hasTouch: breite <= 860 }); const seite = await ctx.newPage(); seite.on("pageerror", (e) => seitenFehler.push(`${wohin}: ${String(e).slice(0, 120)}`)); await seite.goto(BASIS + "/workspace/", { waitUntil: "networkidle" }); diff --git a/server/pruef-willkommen.mjs b/server/pruef-willkommen.mjs index 7ac993c3..1f7e4d37 100644 --- a/server/pruef-willkommen.mjs +++ b/server/pruef-willkommen.mjs @@ -377,7 +377,7 @@ melde("\n=== Am echten Bildschirm ==="); const seitenFehler = []; async function alsSeite(rolle, code, breite = 1280) { - const ctx = await browser.newContext({ viewport: { width: breite, height: 950 } }); + const ctx = await browser.newContext({ viewport: { width: breite, height: 950 }, hasTouch: breite <= 860 }); const s = await ctx.newPage(); s.on("pageerror", (e) => seitenFehler.push(`${rolle}: ${String(e).slice(0, 110)}`)); await s.goto(`${SEITE}/workspace/`, { waitUntil: "networkidle" }); diff --git a/server/pruef-workspace-seiten.mjs b/server/pruef-workspace-seiten.mjs index 158435a5..41d1f1e2 100644 --- a/server/pruef-workspace-seiten.mjs +++ b/server/pruef-workspace-seiten.mjs @@ -99,7 +99,7 @@ const SEITEN = ["start.html", "uebersicht.html", "aufgaben.html", "kalender.html let fehler = 0; for (const [breite, hoehe, wie] of [[1440, 1000, "Computer"], [390, 844, "Handy"]]) { console.log(`\n=== ${wie} (${breite}px)`); - const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: hoehe }, hasTouch: breite <= 860 }); const seite = await kontext.newPage(); const konsole = []; seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text()); }); diff --git a/server/pruef-zustand-ansicht.mjs b/server/pruef-zustand-ansicht.mjs index f076d000..1b6a928b 100644 --- a/server/pruef-zustand-ansicht.mjs +++ b/server/pruef-zustand-ansicht.mjs @@ -105,7 +105,7 @@ const require = createRequire(pathToFileURL(process.cwd() + "/")); for (const [breite, wie] of [[1440, "Computer"], [390, "Handy"]]) { console.log(`\n=== DogFather · ${wie}`); zuruecksetzen(); - const kontext = await browser.newContext({ viewport: { width: breite, height: 950 } }); + const kontext = await browser.newContext({ viewport: { width: breite, height: 950 }, hasTouch: breite <= 860 }); const konsole = []; const seite = await seiteFuer(kontext, "admin", "CODE-DOGI-0001"); seite.on("console", (m) => { if (m.type() === "error") konsole.push(m.text()); });