Files
2026-10-15 11:57:09 +02:00

73 lines
2.4 KiB
JavaScript

const { app, BrowserWindow } = require('electron');
const path = require('path');
const os = require('os');
const fs = require('fs');
const assert = require('assert');
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'ink-e2e-'));
const vaultDir = path.join(tmp, 'Vault');
fs.mkdirSync(vaultDir);
app.setPath('userData', tmp);
fs.writeFileSync(path.join(tmp, 'settings.json'), JSON.stringify({ vault: vaultDir }));
require('../electron/main.cjs');
app.whenReady().then(async () => {
while (BrowserWindow.getAllWindows().length === 0) {
await new Promise(r => setTimeout(r, 100));
}
const win = BrowserWindow.getAllWindows()[0];
let ok = false;
for (let i = 0; i < 50; i++) {
await new Promise(r => setTimeout(r, 100));
if (win.isDestroyed()) break;
const hasBtn = await win.webContents.executeJavaScript(`!!document.querySelector('[aria-label="New page"]')`).catch(() => false);
if (hasBtn) { ok = true; break; }
}
// Click 'New page'
await win.webContents.executeJavaScript(`
document.querySelector('[aria-label="New page"]').click();
`);
// Wait for the Template picker
let templateReady = false;
for (let i = 0; i < 50; i++) {
await new Promise(r => setTimeout(r, 100));
templateReady = await win.webContents.executeJavaScript(`!!document.querySelector('[aria-label="Templates"]')`).catch(() => false);
if (templateReady) break;
}
assert.strictEqual(templateReady, true, "Template picker didn't open");
// Click 'Blank Page'
await win.webContents.executeJavaScript(`
document.querySelector('.tpl-card[data-blank]').click();
`);
// Wait for the page to render
for (let i = 0; i < 50; i++) {
await new Promise(r => setTimeout(r, 100));
const isReady = await win.webContents.executeJavaScript(`!!document.querySelector('.cover-btn')`).catch(() => false);
if (isReady) break;
}
await win.webContents.executeJavaScript(`
document.querySelector('.cover-btn').click();
`);
// Wait for the popup to render
let popupReady = false;
for (let i = 0; i < 50; i++) {
await new Promise(r => setTimeout(r, 100));
popupReady = await win.webContents.executeJavaScript(`!!document.querySelector('.cover-picker')`).catch(() => false);
if (popupReady) break;
}
assert.strictEqual(popupReady, true, "Cover picker didn't open");
console.log('e2e tests passed!');
app.quit();
});