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(); })();