mirror of
https://github.com/zadam/trilium.git
synced 2026-06-01 18:54:26 +02:00
69 lines
2.8 KiB
HTML
69 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>printToPDF Repro</title>
|
|
<style>
|
|
body { font-family: system-ui; padding: 20px; }
|
|
#log { white-space: pre-wrap; font-family: monospace; background: #f0f0f0; padding: 12px; margin-top: 16px; border-radius: 4px; max-height: 400px; overflow-y: auto; }
|
|
button { margin: 4px; padding: 8px 16px; cursor: pointer; }
|
|
.pass { color: green; } .fail { color: red; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h2>Electron printToPDF — Page Range State Corruption Repro</h2>
|
|
<p>Click <b>Run Test Sequence</b> to reproduce the bug. It will:</p>
|
|
<ol>
|
|
<li>Print with no page range (should succeed)</li>
|
|
<li>Print with page range "999" (should fail — page doesn't exist)</li>
|
|
<li>Print with no page range again (does it still work?)</li>
|
|
</ol>
|
|
<button id="run">Run Test Sequence</button>
|
|
<button id="run-fresh">Run Step 3 Only (fresh, no prior failure)</button>
|
|
<div id="log"></div>
|
|
|
|
<script>
|
|
const { ipcRenderer } = require("electron");
|
|
const logEl = document.getElementById("log");
|
|
|
|
function log(msg, cls) {
|
|
const line = document.createElement("div");
|
|
line.textContent = msg;
|
|
if (cls) line.className = cls;
|
|
logEl.appendChild(line);
|
|
logEl.scrollTop = logEl.scrollHeight;
|
|
}
|
|
|
|
async function runStep(step, pageRanges, description) {
|
|
log(`\n--- Step ${step}: ${description} (pageRanges=${JSON.stringify(pageRanges)}) ---`);
|
|
const result = await ipcRenderer.invoke("print-test", { pageRanges, step });
|
|
if (result.ok) {
|
|
log(` ✓ SUCCESS (buffer: ${result.size} bytes)`, "pass");
|
|
} else {
|
|
log(` ✗ FAILED: ${result.error}`, "fail");
|
|
}
|
|
return result;
|
|
}
|
|
|
|
document.getElementById("run").addEventListener("click", async () => {
|
|
logEl.textContent = "";
|
|
log("=== Test Sequence: state corruption after failed pageRanges ===");
|
|
|
|
await runStep(1, "", "No page range (baseline)");
|
|
await runStep(2, "999", "Invalid page range (expect failure)");
|
|
await runStep(3, "", "No page range again (does state persist?)");
|
|
|
|
log("\n=== Done ===");
|
|
log("If Step 3 fails with 'Page range exceeds page count',");
|
|
log("it confirms an Electron/Chromium state corruption bug.");
|
|
});
|
|
|
|
document.getElementById("run-fresh").addEventListener("click", async () => {
|
|
logEl.textContent = "";
|
|
log("=== Control: single call with no page range ===");
|
|
await runStep("C", "", "No page range (no prior failure)");
|
|
log("\n=== Done ===");
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|