import type { ElectronApplication } from '@playwright/test'; import { closeElectronApp, expect, getStableWindow, test } from './fixtures/electron'; async function getZoomLevel(app: ElectronApplication): Promise { return await app.evaluate(({ BrowserWindow }) => { const win = BrowserWindow.getAllWindows()[0]; return win?.webContents.getZoomLevel() ?? 0; }); } async function sendZoomShortcut(app: ElectronApplication, action: 'in' | 'out'): Promise { await app.evaluate(({ BrowserWindow }, zoomAction) => { const win = BrowserWindow.getAllWindows()[0]; const contents = win?.webContents; if (!contents) return; const input = zoomAction === 'out' ? { key: '-', code: 'Minus', control: true, meta: false, alt: false } : { key: '=', code: 'Equal', control: true, meta: false, alt: false }; contents.emit('before-input-event', { preventDefault() {} }, input); }, action); } test.describe('ClawX window zoom shortcuts', () => { test('can zoom back in after zooming out with keyboard shortcuts', async ({ launchElectronApp }) => { const app = await launchElectronApp({ skipSetup: true }); try { const page = await getStableWindow(app); await expect(page.getByTestId('main-layout')).toBeVisible(); await app.evaluate(({ BrowserWindow }) => { BrowserWindow.getAllWindows()[0]?.webContents.setZoomLevel(0); }); await sendZoomShortcut(app, 'out'); await expect.poll(async () => await getZoomLevel(app)).toBe(-1); await sendZoomShortcut(app, 'in'); await expect.poll(async () => await getZoomLevel(app)).toBe(0); } finally { await closeElectronApp(app); } }); });