// Browser-Laufzeittest: echter DWG-Import über den App-Import-Pfad. // Lädt eine echte DWG über das versteckte File-Input (uploadFile), wartet bis // LibreDWG-WASM geparst hat, und screenshotet den Import-Dialog mit der ECHTEN // Zusammenfassung (Konturen/Layer) statt des ODA-Hinweises. import puppeteer from "puppeteer"; const URL = process.env.URL || "http://localhost:5173/"; const SAMPLE = "/tmp/claude-1000/-home-karim-cad/65983130-c639-428b-bd68-85eafeb48d98/scratchpad/sample.dwg"; const b = await puppeteer.launch({ headless: "new", args: ["--no-sandbox", "--use-gl=swiftshader", "--enable-unsafe-swiftshader"], }); const p = await b.newPage(); await p.setViewport({ width: 1300, height: 900, deviceScaleFactor: 2 }); const logs = []; p.on("pageerror", (e) => logs.push("ERR:" + e.message)); p.on("console", (m) => { if (m.type() === "error") logs.push("CONSOLE:" + m.text()); }); await p.goto(URL, { waitUntil: "networkidle0", timeout: 20000 }).catch(() => {}); await new Promise((r) => setTimeout(r, 700)); // File-Input mit accept=".dxf,.dwg" finden und die echte DWG hochladen. const input = await p.$('input[type=file][accept*=".dwg"]'); if (!input) { console.log("FAIL: DWG-File-Input nicht gefunden."); await b.close(); process.exit(1); } await input.uploadFile(SAMPLE); // Auf Ladehinweis screenshoten (kann sehr kurz sein), dann auf Ergebnis warten. await new Promise((r) => setTimeout(r, 150)); await p.screenshot({ path: "scripts/probe-dwg-loading.png" }).catch(() => {}); // Warten, bis der Dialog die echte Zusammenfassung zeigt (oder bis Timeout). let summaryText = ""; for (let i = 0; i < 60; i++) { await new Promise((r) => setTimeout(r, 250)); summaryText = await p.evaluate(() => { const sum = document.querySelector(".imp-summary"); const hint = document.querySelector(".imp-dwg-hint"); return JSON.stringify({ summary: sum ? sum.textContent : null, hint: hint ? hint.textContent : null, }); }); const parsed = JSON.parse(summaryText); if (parsed.summary) break; // echte Zusammenfassung erschienen } await p.screenshot({ path: "scripts/probe-dwg-import.png" }); const parsed = JSON.parse(summaryText); console.log("Dialog-Zusammenfassung:", parsed.summary); console.log("ODA-Hinweis (sollte null sein bei Erfolg):", parsed.hint); console.log("Logs:", logs.length ? logs.join(" | ") : "(keine)"); if (!parsed.summary) { console.log("FAIL: keine echte Zusammenfassung — DWG nicht geparst."); await b.close(); process.exit(1); } console.log("OK: DWG über den Import-Pfad geparst, echte Zusammenfassung sichtbar."); await b.close();