Öffnungszeiten: Fixrunde Website-Skript und Editor (JSON-LD, Kopf beim Scrollen, späte Platzhalter, Links, Bestätigung)

- JSON-LD wird ohne "<" geschrieben (<), ein </script> im Firmennamen bricht keinen Block mehr
- verschiebe(): ist die Hinweis-Leiste weggescrollt, bekommen feste Elemente ihren eigenen Inline-top zurück
  (Köpfe, die per Klasse beim Scrollen wegfahren, funktionieren wieder)
- Späte Platzhalter (Einzelseiten-Apps): entprellter MutationObserver auf body zeichnet neue oder wieder
  eingehängte Platzhalter nach
- sichererLink lehnt Zugangsdaten in der Adresse ab; die Adresse der Schnittstelle bestimmt nur das eigene
  Script-Tag, kein Platzhalter mehr (der siteKey am Platzhalter bleibt laut Spec 4.2)
- Editor: die Bestätigung klebt unter der Kopfleiste und bleibt nach dem Speichern eines unteren Abschnitts sichtbar

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-05 09:10:02 +00:00
1 parent ecf67d6978
commit aa9ee35ab6
6 files changed
+221 -12

No files matched your search

+24
View File
@@ -357,6 +357,30 @@ async function pruefungen() {
eq(puts, [3, 4], 'zweites PUT mit der neuen Version')
})
// ---------------------------------------------------------------- Bestätigung bleibt sichtbar
// Die Meldung ist das erste Kind des Editors; nach dem Speichern eines unteren Abschnitts (Kontakt) springt der Fokus auf den Knopf. Ohne
// klebende Meldung stünde „gespeichert“ dann ausserhalb des Fensters.
await check('fx_meldung_bleibt_sichtbar', async (page) => {
await oeffneEditor(page)
const form = page.locator('form[aria-label="Kontakt-Leiste"]')
await form.scrollIntoViewIfNeeded()
await form.locator('input[type="tel"]').first().fill('06301 999888')
await knopf(form, 'Kontakt-Leiste speichern').click()
await meldung(page).filter({ hasText: 'Kontakt-Leiste gespeichert' }).waitFor()
await page.waitForTimeout(150)
const lage = await meldung(page).evaluate((e) => {
const r = e.getBoundingClientRect()
return { oben: r.top, unten: r.bottom, hoehe: r.height, fenster: window.innerHeight, pos: getComputedStyle(e).position, scroll: window.scrollY }
})
assert(lage.scroll > 300, `die Prüfung braucht eine gescrollte Seite (scrollY ${lage.scroll})`)
assert(lage.hoehe > 0 && lage.oben >= -0.5 && lage.unten <= lage.fenster + 0.5, `Meldung liegt ausserhalb des Fensters: ${JSON.stringify(lage)}`)
eq(lage.pos, 'sticky', 'Meldung klebt unter der Kopfleiste')
// leer klebt sie nicht (kein leerer Streifen)
await meldung(page).evaluate((e) => { e.textContent = '' })
eq(await meldung(page).evaluate((e) => getComputedStyle(e).position), 'static', 'leere Meldung')
await shot(page, 'meldung-sichtbar')
}, { context: { viewport: { width: 1280, height: 600 } } })
// ---------------------------------------------------------------- Urlaub ⇒ Hinweis-Vorschlag, „Hinweis-Leiste anlegen“
await check('fx_hinweis_vorschlag', async (page, _ctx, fx) => {
await oeffneEditor(page)