import { readFileSync } from "node:fs"; import path from "node:path"; import { _electron as electron, expect, test } from "@playwright/test"; const styles = readFileSync(path.resolve(import.meta.dirname, "../../web/src/styles.css"), "utf8"); const fixture = ` Rakazo window drag
Desktop fixture ready
Chief
`; test("an active Electron window keeps header dragging selection-free and controls clickable", async () => { const app = await electron.launch({ args: ["."], cwd: path.resolve(import.meta.dirname, ".."), env: { ...process.env, RAKAZO_WEB_URL: `data:text/html;charset=utf-8,${encodeURIComponent(fixture)}`, }, }); try { const page = await app.firstWindow(); const active = await app.evaluate(({ BrowserWindow }) => { const window = BrowserWindow.getAllWindows()[0]; window?.show(); window?.focus(); return window?.isFocused(); }); expect(active).toBe(true); const regions = await page.evaluate(() => { const header = document.querySelector("#conversation-header"); const settings = document.querySelector("#bot-settings"); if (!(header instanceof HTMLElement) || !(settings instanceof HTMLElement)) { throw new Error("missing window chrome fixture"); } const headerStyle = getComputedStyle(header); const settingsStyle = getComputedStyle(settings); return { header: { appRegion: headerStyle.getPropertyValue("-webkit-app-region"), userSelect: headerStyle.userSelect, }, settings: settingsStyle.getPropertyValue("-webkit-app-region"), }; }); expect(regions).toEqual({ header: { appRegion: "drag", userSelect: "none" }, settings: "no-drag", }); await page.getByRole("button", { name: "Bot settings" }).click(); await expect(page.locator("#result")).toHaveText("opened"); } finally { await app.close(); } });