fecd8bb9c9
562 Ersetzungen in 50 Dateien: Halbgeviertstrich zwischen zwei Ziffern (= "bis"-Bereich) bekommt Leerzeichen davor/danach (3–4 -> 3 – 4). Regex /([0-9])\s*–\s*(?=[0-9])/ auf Rohtext (format-erhaltend, CRLF/Einrueckung unveraendert), Bindestriche in Woertern und Minuszeichen unangetastet, alle JSON weiter gueltig. Energiemanager-Zeitbloecke sind Display-Labels (kein Logik-Key) -> safe. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
1.7 KiB
JavaScript
35 lines
1.7 KiB
JavaScript
const { chromium } = require('@playwright/test');
|
|
(async () => {
|
|
const b = await chromium.launch(); const p = await b.newPage();
|
|
const errs=[]; p.on('pageerror',e=>errs.push(e.message)); p.on('console',m=>{if(m.type()==='error')errs.push(m.text());});
|
|
await p.route('**/api/admin', r => r.fulfill({ contentType:'application/json', body: JSON.stringify({authenticated:true}) }));
|
|
await p.goto('http://localhost/geograsim/App/admin-weltkueche.html');
|
|
await p.waitForTimeout(2000);
|
|
const r = await p.evaluate(() => {
|
|
const dishes = [...document.querySelectorAll('.dish')];
|
|
const names = dishes.map(d => d.querySelector('.nm')?.textContent);
|
|
function dishInfo(namePart){
|
|
const d = dishes.find(x => (x.querySelector('.nm')?.textContent||'').toLowerCase().includes(namePart));
|
|
if(!d) return null;
|
|
const rows = [...d.querySelectorAll('tbody tr')].map(tr => ({
|
|
ing: tr.querySelector('.ing-nm')?.textContent.replace(/\s+/g,' ').trim(),
|
|
ok: [...tr.querySelectorAll('.cty.ok')].map(c=>c.textContent.replace(/\s+/g,' ').trim()),
|
|
dist: [...tr.querySelectorAll('.cty.dist')].map(c=>c.title.split(' · ')[0]),
|
|
}));
|
|
return rows;
|
|
}
|
|
const groestl = dishInfo('tiroler gröstl');
|
|
const kart = groestl && groestl.find(r => /Kartoffel/i.test(r.ing));
|
|
const eierRow = groestl && groestl.find(r => /Eier/i.test(r.ing));
|
|
return {
|
|
dishCount: dishes.length,
|
|
sampleNames: names.slice(0,6),
|
|
kartoffelOk: kart ? kart.ok : null,
|
|
eierOk: eierRow ? eierRow.ok : null,
|
|
warnCount: document.querySelectorAll('.warn').length,
|
|
};
|
|
});
|
|
console.log(JSON.stringify({result:r, pageErrors:errs}, null, 2));
|
|
await b.close();
|
|
})();
|