Generate mocks for Electron APIs (ipcMain, ipcRenderer, dialog, etc.) for unit testing
Scanned 9/2/2026
Install to Claude Code
npx -y skills add a5c-ai/babysitter --skill electron-mock-factory --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Electron Mock Factory?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/a5c-ai-electron-mock-factory-babysitter)More formats (shields.io, HTML) on the badges page.
---
name: electron-mock-factory
description: Generate mocks for Electron APIs (ipcMain, ipcRenderer, dialog, etc.) for unit testing
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
tags: [electron, testing, mocks, unit-testing, jest]
graph:
domains: [domain:software-engineering]
specializations: [specialization:desktop-development]
skillAreas: [skill-area:desktop-ui-frameworks, skill-area:cross-platform-desktop, skill-area:graphics-rendering]
roles: [role:desktop-developer, role:fullstack-engineer]
workflows: [workflow:feature-development, workflow:release-management]
---
# 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
```json
{
"type": "object",
"properties": {
"projectPath": { "type": "string" },
"testFramework": { "enum": ["jest", "vitest", "mocha"] },
"modulesToMock": { "type": "array" }
},
"required": ["projectPath"]
}
```
## Generated Mocks
```javascript
// __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
```javascript
jest.mock('electron');
const { ipcRenderer } = require('electron');
test('sends message', () => {
myModule.sendMessage('hello');
expect(ipcRenderer.send).toHaveBeenCalledWith('channel', 'hello');
});
```
## Related Skills
- `playwright-electron-config`
- `desktop-unit-testing` process
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!