builder-app-example
Version:
Electron Builder app example using wdio-electron-service
76 lines (64 loc) • 1.81 kB
text/typescript
import { app, BrowserWindow, dialog, ipcMain, Menu } from 'electron';
import { join } from 'node:path';
function createWindow(): BrowserWindow {
const mainWindow = new BrowserWindow({
width: 900,
height: 700,
webPreferences: {
preload: join(__dirname, '../preload/index.cjs'),
nodeIntegration: false,
contextIsolation: true,
},
});
// Enable devtools in development
if (process.env.ELECTRON_RENDERER_URL) {
mainWindow.webContents.openDevTools();
}
// Load the renderer
if (process.env.ELECTRON_RENDERER_URL) {
mainWindow.loadURL(process.env.ELECTRON_RENDERER_URL);
} else {
mainWindow.loadFile(join(__dirname, '../renderer/index.html'));
}
// Create a simple menu for builder demo
const template = [
{
label: 'File',
submenu: [
{
label: 'About',
click: () => {
dialog.showMessageBox(mainWindow, {
type: 'info',
title: 'About Builder App',
message: 'Built with Electron Builder & electron-vite',
detail: 'This is a demo app for wdio-electron-service testing',
});
},
},
{ type: 'separator' },
{ role: 'quit' as const },
],
},
];
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
return mainWindow;
}
// IPC handlers for testing
ipcMain.handle('get-app-version', () => {
return app.getVersion();
});
ipcMain.handle('get-app-name', () => {
return app.getName();
});
// App event handlers
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit();
});