Babysitter electron-mock-factory
Generate mocks for Electron APIs (ipcMain, ipcRenderer, dialog, etc.) for unit testing
install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/desktop-development/skills/electron-mock-factory" ~/.claude/skills/a5c-ai-babysitter-electron-mock-factory && rm -rf "$T"
manifest:
library/specializations/desktop-development/skills/electron-mock-factory/SKILL.mdsource content
electron-mock-factory
Generate mocks for Electron APIs to enable unit testing of main and renderer process code without running Electron.
Capabilities
- Mock ipcMain/ipcRenderer
- Mock dialog module
- Mock BrowserWindow
- Mock shell, clipboard, app
- Generate Jest/Vitest mocks
- Create test utilities
Input Schema
{ "type": "object", "properties": { "projectPath": { "type": "string" }, "testFramework": { "enum": ["jest", "vitest", "mocha"] }, "modulesToMock": { "type": "array" } }, "required": ["projectPath"] }
Generated Mocks
// __mocks__/electron.js module.exports = { app: { getPath: jest.fn(name => `/mock/${name}`), getVersion: jest.fn(() => '1.0.0'), quit: jest.fn(), on: jest.fn() }, ipcMain: { on: jest.fn(), handle: jest.fn(), removeHandler: jest.fn() }, ipcRenderer: { on: jest.fn(), send: jest.fn(), invoke: jest.fn() }, dialog: { showOpenDialog: jest.fn(() => Promise.resolve({ filePaths: [] })), showSaveDialog: jest.fn(() => Promise.resolve({ filePath: undefined })), showMessageBox: jest.fn(() => Promise.resolve({ response: 0 })) }, BrowserWindow: jest.fn().mockImplementation(() => ({ loadURL: jest.fn(), on: jest.fn(), webContents: { send: jest.fn(), on: jest.fn() } })) };
Usage
jest.mock('electron'); const { ipcRenderer } = require('electron'); test('sends message', () => { myModule.sendMessage('hello'); expect(ipcRenderer.send).toHaveBeenCalledWith('channel', 'hello'); });
Related Skills
playwright-electron-config
processdesktop-unit-testing