Funktionen/News: Schlussdurchgang (Webhook-Retry, Checkout-Sitzung, Rechnungslink, Widerruf Funktion, UI- und Rechtstext-Korrekturen)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5.5 committed 2026-09-30 17:38:15 +00:00
1 parent 0dc57fe5e8
commit 4b7f73abba
22 files changed
+400 -57

No files matched your search

+21
View File
@@ -34,6 +34,7 @@ const SCENARIOS = {
off: [proj('p1', 'Bäckerei Berg', 'off')],
setup: [proj('p1', 'Bäckerei Berg', 'setup')],
active: [proj('p1', 'Bäckerei Berg', 'active')],
disabled: [proj('p1', 'Bäckerei Berg', 'disabled')],
multi: [proj('p1', 'Bäckerei Berg', 'active'), proj('p2', 'Café Nord', 'off')],
}
const CONSENT = 'Ich verlange ausdrücklich, dass WEBklar vor Ablauf der Widerrufsfrist mit dem Einbau beginnt.'
@@ -173,6 +174,17 @@ try {
const back = await page.textContent('#view-news')
check(`${label} bestellt_hinweis`, back.includes('Danke! Sobald die Zahlung da ist, legen wir los.') && back.includes('1234') && back.includes('Rechnung ansehen') && back.includes('Frage dazu? Chat öffnen'))
check(`${label} bestellt_router`, await page.evaluate(() => document.getElementById('view-news').classList.contains('active')))
check(`${label} bestellt_flag_aus_hash`, await page.evaluate(() => !window.location.hash.includes('bestellt')), await page.evaluate(() => window.location.hash))
// Flag ohne bestellte Funktion (Zustand off): kein Dankeshinweis
await open('#news?bestellt=1', 'off')
await page.waitForSelector('#news-order')
check(`${label} bestellt_flag_ignoriert_bei_off`, !(await page.textContent('#view-news')).includes('Danke!'))
// Abgeschaltet: Pille und Knopf der Kachel, Status statt Buchung
await open('#funktionen', 'disabled')
await page.waitForSelector('[data-fn-tile="news"] .fn-pill')
const dis = await page.evaluate(() => ({ pill: document.querySelector('[data-fn-tile="news"] .fn-pill').textContent.trim(), btn: document.querySelector('[data-fn-tile="news"] .fn-tile-cta').textContent.trim() }))
check(`${label} kachel_abgeschaltet`, dis.pill === 'Abgeschaltet' && dis.btn === 'Status ansehen', JSON.stringify(dis))
check(`${label} news_ohne_aria_live`, await page.evaluate(() => !document.getElementById('view-news').hasAttribute('aria-live')))
// Editor
await open('#news', 'active')
@@ -188,6 +200,15 @@ try {
check(`${label} editor_foto_sichtbar`, await page.isVisible('#nw-photo-field'))
const accepts = await page.$$eval('#nw-photo-field input[type=file]', (els) => els.map((e) => `${e.accept}|${e.getAttribute('capture') || ''}`))
check(`${label} editor_foto_accept`, accepts.length >= 1 && accepts.every((a) => a.startsWith('image/jpeg,image/png,image/webp|')) && accepts.filter((a) => a.endsWith('|environment')).length === 1, accepts.join(' ; '))
// Zurueck zum Tab und wieder in News (gleiches Projekt, gleicher Zustand): Entwurf bleibt stehen
await page.fill('#nw-title', 'Entwurf bleibt')
await page.evaluate(() => document.querySelector('.kb-nav-item[data-view="funktionen"]').click())
await page.waitForSelector('[data-fn-tile="news"] .fn-tile-cta')
await page.click('[data-fn-tile="news"] .fn-tile-cta')
await page.waitForSelector('#nw-title')
await page.waitForTimeout(200)
check(`${label} editor_entwurf_bleibt`, (await page.inputValue('#nw-title')) === 'Entwurf bleibt')
await page.fill('#nw-title', 'Neue Winterjacken')
const lists = await page.textContent('#view-news')
check(`${label} editor_listen`, lists.includes('Hängt gerade') && lists.includes('Abgelaufen') && lists.includes('Freitag geschlossen') && lists.includes('Auf meiner Website ansehen'))
await page.click('[data-del]')