diff --git a/server/pruef-eventkarte.mjs b/server/pruef-eventkarte.mjs index 1359a1ab..cf07dd40 100644 --- a/server/pruef-eventkarte.mjs +++ b/server/pruef-eventkarte.mjs @@ -1423,6 +1423,89 @@ melde("\n=== 4c. Die Seitenwahl ==="); ok(links.includes("Oktober Event") && links.includes("Glow Up Struktur"), `ohne Wahl entscheidet weiterhin die Herkunft (links: ${JSON.stringify(links)})`); + /* ---- DER DISCORD-BEITRAG MUSS STEHEN BLEIBEN (08.10.2026) --- + + Filipe: „ich will dass ein banner und ein kompletter fertiger + text für die creator entsteht und nicht einfach der link + kopiert wird.“ + + Der Beitrag liegt nach dem Druck in der Zwischenablage UND + steht sichtbar unter der Kachel — was man nicht gesehen hat, + fügt man blind ein. Genau dieses Sichtbarbleiben wird hier + gemessen, und zwar ÜBER DAS NEUZEICHNEN HINWEG: Nach dem Teilen + lädt das Brett neu (die Kachel muss ja „Link kopieren“ statt + „Teilen“ anzeigen), und dabei wird die ganze Liste geleert und + neu gebaut. + + ZWEI MESSUNGEN, NICHT EINE. „Der Kasten erscheint“ allein wäre + grün, auch wenn er einen Sekundenbruchteil später wieder weg + ist — und genau das sieht man beim Zusehen nicht, weil es zu + schnell geht. */ + { + const vorher = await seite.evaluate(() => { + const k = [...document.querySelectorAll('.eintrag-karte[data-eventkarte="ja"]')] + .find((x) => x.textContent.includes("Glow Up Struktur")); + const b = [...(k?.querySelectorAll(".schritt") || [])] + .find((x) => /^(Teilen|Link kopieren)$/.test(x.textContent.trim())); + b?.click(); + return { geklickt: !!b, wort: b?.textContent.trim() || null }; + }); + ok(vorher.geklickt, `der Teilen-Knopf ist da (${vorher.wort})`); + + /* Kurz: der Kasten soll SOFORT dastehen. */ + await seite.waitForTimeout(600); + const gleich = await seite.evaluate(() => { + const kasten = document.querySelector(".ev-beitrag"); + return { + da: !!kasten, + text: kasten?.querySelector(".ev-beitrag__text")?.value || "", + zahl: kasten?.querySelector(".ev-beitrag__zahl")?.textContent.trim() || null, + }; + }); + ok(gleich.da, `der Beitrag steht unter der Kachel (${gleich.da})`); + ok(gleich.text.length > 100, + `und trägt den ganzen Text (${gleich.text.length} Zeichen)`); + ok(/von 2000 Zeichen/.test(gleich.zahl || ""), + `mit Zeichenzähler: ${JSON.stringify(gleich.zahl)}`); + + /* UND JETZT DAS NEUZEICHNEN ABWARTEN. `laden()` läuft nach dem + Teilen von selbst; zwei Sekunden sind reichlich. */ + await seite.waitForTimeout(2000); + const danach2 = await seite.evaluate(() => { + const kasten = document.querySelector(".ev-beitrag"); + return { + da: !!kasten, + text: kasten?.querySelector(".ev-beitrag__text")?.value || "", + karten: document.querySelectorAll('.eintrag-karte[data-eventkarte="ja"]').length, + }; + }); + melde(" -- nach dem Neuzeichnen: " + JSON.stringify( + { ...danach2, text: `${danach2.text.length} Zeichen` })); + /* DIE KARTENZAHL GEHÖRT IN DIE BEDINGUNG: Ohne sie wäre „der + Kasten ist noch da“ auch auf einer kaputten Seite grün. */ + ok(danach2.karten === 5 && danach2.da, + `der Beitrag überlebt das Neuzeichnen ` + + `(${danach2.karten} Kacheln, Kasten da: ${danach2.da})`); + ok(danach2.text.length > 100, + `und sein Text ebenso (${danach2.text.length} Zeichen)`); + + /* ZUMACHEN GEHT — und danach kommt er NICHT von selbst wieder. + Ein Kasten, der sich nicht schließen lässt, ist schlimmer als + einer, der verschwindet. */ + await seite.evaluate(() => { + const zu = [...document.querySelectorAll(".ev-beitrag__reihe .knopf")] + .find((x) => /schließen/i.test(x.textContent)); + zu?.click(); + }); + await seite.waitForTimeout(1600); + const zu = await seite.evaluate(() => ({ + da: !!document.querySelector(".ev-beitrag"), + karten: document.querySelectorAll('.eintrag-karte[data-eventkarte="ja"]').length, + })); + ok(zu.karten === 5 && !zu.da, + `geschlossen bleibt geschlossen (${zu.karten} Kacheln, Kasten da: ${zu.da})`); + } + /* ---- DIE ZWEI SEITEN, KRASSER (08.10.2026) ---------------- Filipe: „perfektionier die zwei events kategorien. ich will es diff --git a/workspace/anleitung.html b/workspace/anleitung.html index ea3d57e9..31f6dfae 100644 --- a/workspace/anleitung.html +++ b/workspace/anleitung.html @@ -7,17 +7,17 @@ - - - - - + + + + + - - + + @@ -289,16 +289,16 @@ Und anleitung.js braucht es doppelt: Symbol, Farbe, Name und Adresse jeder Karte kommen von dort, nicht vom Server. --> - + - - - - - - + + + + + + diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index c1c4299d..0b97f21e 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`. --> - - + + - +