Datenschutzerklärung Stand 17.10.2026: Abschnitt 4a Reichweitenmessung auf webklar.com, PDF neu
- Abschnitt 4: eigene Website-Analyse auf webklar.com statt "keine Analyse-Werkzeuge", Eintrag wk-consent. - Abschnitt 4a: Rolle (WEBklar selbst Verantwortlicher), Daten ohne und mit Einwilligung, Rechtsgrundlagen, Widerruf, Fristen, Verweis auf webklar.com/datenschutz-analyse.html. - Abschnitt 5: Kontaktformular-Anfragen gehen seit 17.10.2026 auch per Mail an das eigene Postfach. - Abschnitt 13: Einwilligung nur für die erweiterte Reichweitenmessung. - Archiv: Banner-Fassung eigen 2026-10-17 und Kopie der Zusatzseite von webklar.com. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9ed295946c
commit
07a4e153bf
10 files changed
+173
-16
No files matched your search
@@ -76,3 +76,14 @@ test('Banner-Archiv: Text und aria-label wortgleich zu core.js, README nennt BAN
|
||||
readFileSync(root('runner/src/templates/datenschutz-analyse.html'))
|
||||
)
|
||||
})
|
||||
|
||||
test('Banner-Archiv eigene Website: Sie-Fassung wortgleich zu core.js, README nennt BANNER_VERSION_EIGEN', () => {
|
||||
const v = core.BANNER_VERSION_EIGEN
|
||||
const md = readFileSync(root(`docs/rechtliches/archiv/banner-eigen-${v}.md`), 'utf8')
|
||||
assert.ok(md.includes(core.BANNER_TEXT_EIGEN))
|
||||
assert.ok(md.includes(`BANNER_VERSION_EIGEN\`: ${v}`))
|
||||
const readme = readFileSync(root('docs/rechtliches/archiv/README.md'), 'utf8')
|
||||
assert.ok(readme.includes('BANNER_VERSION_EIGEN') && readme.includes(`datenschutz-analyse-webklar-com-${v}.html`))
|
||||
const seite = readFileSync(root(`docs/rechtliches/archiv/datenschutz-analyse-webklar-com-${v}.html`), 'utf8')
|
||||
assert.ok(seite.includes(`Stand ${v.slice(8, 10)}.${v.slice(5, 7)}.${v.slice(0, 4)}`), 'Stand der Zusatzseite = Fassung')
|
||||
})
|
||||
@@ -39,5 +39,5 @@ test('Datenschutz-Prüfpunkte D1 bis D8 mit gültiger Fundstelle in public/daten
|
||||
const zeilen = lies('public/datenschutz.html').split('\n')
|
||||
const refs = [...dsg.matchAll(/public\/datenschutz\.html:(\d+)/g)].map((m) => Number(m[1]))
|
||||
assert.ok(refs.length >= 8 && refs.every((n) => n >= 1 && n <= zeilen.length))
|
||||
assert.ok(zeilen[119].includes('Zahlungspflichtig bestellen') && zeilen[118].includes('Leistungsbeginn') && zeilen[94].includes('Wartungs-Abo'), 'D1, D2, D5 zitieren die richtigen Zeilen')
|
||||
assert.ok(zeilen[126].includes('Zahlungspflichtig bestellen') && zeilen[125].includes('Leistungsbeginn') && zeilen[101].includes('Wartungs-Abo'), 'D1, D2, D5 zitieren die richtigen Zeilen')
|
||||
})
|
||||
+25
-1
@@ -558,7 +558,7 @@ test('legal_datenschutz_kundenansicht: Abschnitt 6 nennt Kundenansicht, Sperren,
|
||||
const terms = /^(\d{4})-(\d{2})-(\d{2})-v\d+$/.exec(config.abo.termsVersion)
|
||||
assert.ok(terms)
|
||||
assert.ok(standTag >= `${terms[1]}-${terms[2]}-${terms[3]}`, `Stand ${stand[0]} liegt vor termsVersion ${config.abo.termsVersion}`)
|
||||
assert.ok(html.includes('<p class="meta">Stand 07.10.2026</p>'), 'Stand = Tag der Änderung (Abschnitt 6f Buchungskalender)')
|
||||
assert.ok(html.includes('<p class="meta">Stand 17.10.2026</p>'), 'Stand = Tag der Änderung (Abschnitt 4a Reichweitenmessung auf webklar.com)')
|
||||
})
|
||||
|
||||
// ---------------------------------------------------------------- Abschnitt 6c und Funktionsbestellung (TP2 F12a)
|
||||
@@ -708,3 +708,27 @@ test('datenschutz_pdf: das PDF der Datenschutzerklärung ist eingecheckt (> 20 K
|
||||
const skript = read('scripts/build-legal-pdfs.sh')
|
||||
assert.match(skript, /\ndatenschutz\)[\s\S]*\n\s+pdf public\/datenschutz\.html docs\/WEBklar-Datenschutzerklaerung\.pdf\n[\s\S]*?;;/)
|
||||
})
|
||||
|
||||
// ---------------------------------------------------------------- Reichweitenmessung auf webklar.com (eigene Website-Analyse)
|
||||
|
||||
test('legal_datenschutz_4a: eigene Website-Analyse auf webklar.com mit Rolle, Rechtsgrundlagen, Fristen und Zusatzseite', () => {
|
||||
const html = read(DS)
|
||||
const ds = strip(html)
|
||||
// Der frühere Satz "keine Analyse-, Tracking- oder Marketing-Werkzeuge" gilt nur noch mit Ausnahme der eigenen Messung
|
||||
assert.ok(ds.includes('Auf webklar.com messen wir mit unserer eigenen Website-Analyse, wie die Seite genutzt wird (Abschnitt 4a). Darüber hinaus setzen wir auf unseren eigenen Seiten'))
|
||||
assert.ok(!ds.includes('Derzeit stützen wir keine Verarbeitung auf eine Einwilligung.'))
|
||||
assert.ok(ds.includes('Auf eine Einwilligung stützen wir derzeit nur die erweiterte Reichweitenmessung auf webklar.com (Abschnitt 4a).'))
|
||||
assert.ok(html.includes('<tr><td>wk-consent (lokaler Speicher, webklar.com)</td>'))
|
||||
// 4a steht zwischen 4 und 5
|
||||
const i4 = html.indexOf('<h2>4. Cookies und Speicher im Browser</h2>')
|
||||
const i4a = html.indexOf('<h2 id="reichweitenmessung">4a. Reichweitenmessung auf webklar.com</h2>')
|
||||
const i5 = html.indexOf('<h2>5. Kontaktaufnahme</h2>')
|
||||
assert.ok(i4 > 0 && i4 < i4a && i4a < i5, 'Reihenfolge 4, 4a, 5')
|
||||
const block = strip(html.slice(i4a, i5))
|
||||
for (const s of ['für webklar.com sind wir selbst Verantwortlicher', 'Hetzner Online GmbH in Deutschland', 'ohne Cookies',
|
||||
'Art. 6 Abs. 1 lit. f DSGVO', '§ 25 Abs. 1 TDDDG und Art. 6 Abs. 1 lit. a DSGVO', 'Global Privacy Control', 'Keks-Symbol',
|
||||
'nach 30 Tagen', 'nach 25 Monaten', 'täglich wechselt', 'webklar.com/datenschutz-analyse.html']) assert.ok(block.includes(s), s)
|
||||
assert.ok(html.includes('<a href="https://webklar.com/datenschutz-analyse.html">'))
|
||||
// Kontaktformular: seit 17.10.2026 auch per Mail an das eigene Postfach
|
||||
assert.ok(ds.includes('und schicken sie zugleich per E-Mail an unser Postfach (Abschnitt 8)'))
|
||||
})
|
||||
Reference in new issue
Block a user