diff --git a/public/neu/bilder/news.webp b/public/neu/bilder/news.webp new file mode 100644 index 0000000..1bedcaa Binary files /dev/null and b/public/neu/bilder/news.webp differ diff --git a/public/neu/bilder/shop.webp b/public/neu/bilder/shop.webp new file mode 100644 index 0000000..f5da993 Binary files /dev/null and b/public/neu/bilder/shop.webp differ diff --git a/public/neu/bilder/termine.webp b/public/neu/bilder/termine.webp new file mode 100644 index 0000000..277d252 Binary files /dev/null and b/public/neu/bilder/termine.webp differ diff --git a/public/neu/bilder/unterkunft.webp b/public/neu/bilder/unterkunft.webp new file mode 100644 index 0000000..9bcc20b Binary files /dev/null and b/public/neu/bilder/unterkunft.webp differ diff --git a/public/neu/bilder/zeiten.webp b/public/neu/bilder/zeiten.webp new file mode 100644 index 0000000..8eea343 Binary files /dev/null and b/public/neu/bilder/zeiten.webp differ diff --git a/test/knFunktionenStatik.test.js b/test/knFunktionenStatik.test.js index eaccbd4..f70710f 100644 --- a/test/knFunktionenStatik.test.js +++ b/test/knFunktionenStatik.test.js @@ -1,6 +1,7 @@ import { test } from 'node:test' import assert from 'node:assert/strict' -import { readFileSync } from 'node:fs' +import { readFileSync, statSync, readdirSync, existsSync } from 'node:fs' +import sharp from 'sharp' const lies = (pfad) => readFileSync(new URL(`../${pfad}`, import.meta.url), 'utf8') const ohneKommentare = (t) => t.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/.*$/gm, '$1') @@ -91,3 +92,27 @@ test('beide Module laden unter Node ohne DOM (kein Zugriff beim Import)', async test('Module der Funktionen: keine Hash-Namen außer den vorhandenen, kein Hash mit Großbuchstaben', () => { for (const datei of JS) for (const m of ohneKommentare(lies(datei)).matchAll(/'#([A-Za-z-]+)/g)) assert.match(m[1], /^[a-z-]+$/, `${datei}: #${m[1]}`) }) + +test('Bilder: fünf webp-Dateien, 960×600, höchstens 120 KB; analyse.webp, falls da, ebenso', async () => { + const PFLICHT = ['news', 'termine', 'shop', 'unterkunft', 'zeiten'] + const ordner = new URL('../public/neu/bilder/', import.meta.url) + assert.ok(existsSync(ordner), 'public/neu/bilder/ fehlt') + const da = readdirSync(ordner).sort() + for (const d of da) assert.ok([...PFLICHT, 'analyse'].map((k) => `${k}.webp`).includes(d), `unerwartete Datei ${d}`) + for (const key of PFLICHT) assert.ok(da.includes(`${key}.webp`), `${key}.webp fehlt`) + for (const d of da) { + const pfad = new URL(d, ordner).pathname + const meta = await sharp(pfad).metadata() + assert.deepEqual([meta.format, meta.width, meta.height], ['webp', 960, 600], d) + assert.ok(statSync(pfad).size <= 122880, `${d} größer als 120 KB`) + } +}) + +test('Bilder: jede Bildadresse des Katalogs zeigt auf eine Datei unter public/neu/bilder/ (Testdaten)', async () => { + const { daten } = await import('./support/knFunktionenDaten.js') + for (const e of daten().katalog) { + const m = /^\/neu\/bilder\/([a-z0-9-]+)\.webp$/.exec(e.bild) + assert.ok(m, e.key) + if (e.key !== 'analyse') assert.ok(existsSync(new URL(`../public/neu/bilder/${m[1]}.webp`, import.meta.url)), `${e.key}: Bild fehlt`) // analyse.webp kommt mit P4 (VF2) + } +})