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>
75 lines
3.0 KiB
JavaScript
75 lines
3.0 KiB
JavaScript
const { chromium } = require('@playwright/test');
|
|
(async () => {
|
|
const browser = await chromium.launch();
|
|
const out = {};
|
|
|
|
// 1) modul-weltkueche: Lehrplan-Bezug jetzt vorhanden?
|
|
{
|
|
const page = await browser.newPage();
|
|
await page.goto('https://geograsim.at/modul-weltkueche', { waitUntil: 'domcontentloaded' });
|
|
await page.waitForTimeout(1000);
|
|
out.modulWeltkueche = await page.evaluate(() => ({
|
|
kompetenzTitles: [...document.querySelectorAll('.md-kompetenz-title')].map(e=>e.textContent.trim()),
|
|
anchorCount: document.querySelectorAll('.md-anchor').length,
|
|
showsEmpty: document.body.textContent.includes('Noch keine Kompetenzen zugeordnet'),
|
|
}));
|
|
await page.close();
|
|
}
|
|
|
|
// 2) Weltküche-Sim: Artikel + Ukraine-Feedback
|
|
{
|
|
const page = await browser.newPage();
|
|
const errs=[]; page.on('pageerror',e=>errs.push(e.message));
|
|
await page.goto('https://geograsim.at/sims/weltkueche/game.html', { waitUntil:'domcontentloaded' });
|
|
await page.waitForTimeout(2000);
|
|
out.weltkueche = await page.evaluate(async () => {
|
|
try {
|
|
if (!DISHES.length) await loadWeltkuecheData();
|
|
const dish = DISHES.find(d=>d.id==='tiroler-groestl'); current={dish};
|
|
buildTaskFor('kartoffel');
|
|
return {
|
|
kartoffelArt: ING.kartoffel.art,
|
|
badArticles: Object.entries(ING).filter(([k,v])=>!['der','die','das'].includes(v&&v.art)).map(([k])=>k),
|
|
wrongUA: explainChoice('kartoffel','ukraine',false).text,
|
|
};
|
|
} catch(e){ return { error:String(e) }; }
|
|
});
|
|
out.weltkueche.pageErrors = errs;
|
|
await page.close();
|
|
}
|
|
|
|
// 3) teacher.html: lädt + neue Funktionen da (direkter Link, den das Produkt nutzt)
|
|
{
|
|
const page = await browser.newPage();
|
|
const errs=[]; page.on('pageerror',e=>errs.push(e.message));
|
|
// teacher.html leitet ohne Login auf login.html um — Navigation abfangen, sofort auswerten
|
|
await page.route('**/login.html', r=>r.abort());
|
|
await page.goto('https://geograsim.at/teacher.html', { waitUntil:'domcontentloaded' }).catch(()=>{});
|
|
await page.waitForTimeout(1500);
|
|
out.teacher = await page.evaluate(() => ({
|
|
hasRenderGesamt: typeof renderLiveGesamt === 'function',
|
|
hasQualityBar: typeof _liveQualityBar === 'function',
|
|
qualitySample: (typeof _liveQualityBar==='function') ? _liveQualityBar(8,2) : null,
|
|
tabLabels: [...document.querySelectorAll('#tab-bar .tab')].map(t=>t.textContent.trim()),
|
|
})).catch(e=>({evalError:String(e)}));
|
|
out.teacher.pageErrors = errs;
|
|
await page.close();
|
|
}
|
|
|
|
// 4) Tourismusregion passstrasse Karte
|
|
{
|
|
const page = await browser.newPage();
|
|
const mc = await page.request.get('https://geograsim.at/sims/tourismusregion/js/maps-custom.json');
|
|
const j = await mc.json();
|
|
out.tourismus = {
|
|
keys: Object.keys(j),
|
|
passBergaufPoints: j.passstrasse?.routes?.bergauf?.length ?? null,
|
|
passSlots: (j.passstrasse?.slots||[]).length,
|
|
};
|
|
await page.close();
|
|
}
|
|
|
|
console.log(JSON.stringify(out, null, 2));
|
|
await browser.close();
|
|
})();
|