# Electron Mock Factory

> Generate mocks for Electron APIs (ipcMain, ipcRenderer, dialog, etc.) for unit testing

- Skill: `a5c-ai/electron-mock-factory` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add a5c-ai/electron-mock-factory`
- Raw SKILL.md: https://api.skillmd.com/api/skills/a5c-ai/electron-mock-factory/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: a5c-ai (https://skillmd.com/u/a5c-ai)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/a5c-ai/electron-mock-factory

---


# 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

