Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kayahr/jest-electron-runner
Custom test runner for Jest that allows tests to be run in Electron environment
https://github.com/kayahr/jest-electron-runner
electron jest test-runner testing
Last synced: about 2 months ago
JSON representation
Custom test runner for Jest that allows tests to be run in Electron environment
- Host: GitHub
- URL: https://github.com/kayahr/jest-electron-runner
- Owner: kayahr
- License: mit
- Created: 2021-10-01T11:11:36.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-04T19:51:07.000Z (10 months ago)
- Last Synced: 2024-04-04T20:52:08.960Z (10 months ago)
- Topics: electron, jest, test-runner, testing
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@kayahr/jest-electron-runner
- Size: 1.65 MB
- Stars: 19
- Watchers: 3
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Funding: .github/funding.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# Jest Electron Runner
A custom test runner for Jest that runs tests inside an [electron](https://electronjs.org/) main or renderer process providing the following benefits:
- Main
- all electron instance modules (ipc, app, etc)- Renderer
- full access to a browser environment without the need for jsdom or similar modulesThis project is a fork of Facebook's [@jest-runner/electron](https://github.com/facebook-atom/jest-electron-runner) which seems to be no longer maintained, was archived on Github and is not working with newer Jest versions. I simplified the project, converted it from Flow to TypeScript and made it compatible to Jest 27 and newer.
## Getting Started
1. Install jest electron runner with `npm i --save-dev @kayahr/jest-electron-runner`
2. Add one of these lines to your jest config (in `package.json` or inside your `jest.config.js` file), depending on the process you wish to test. If you wish to test them in parallel, see the tips section below.- Main process
```json
{
"runner": "@kayahr/jest-electron-runner/main",
"testEnvironment": "node"
}
```
- Renderer Process
```json
{
"runner": "@kayahr/jest-electron-runner",
"testEnvironment": "@kayahr/jest-electron-runner/environment"
}
```
3. Run jest.## Configuration
jest-electron-runner can be configured through test environment options like this:
```json
{
"runner": "@kayahr/jest-electron-runner",
"testEnvironment": "@kayahr/jest-electron-runner/environment",
"testEnvironmentOptions": {
"electron": {
"options": [
"no-sandbox",
"ignore-certificate-errors",
"force-device-scale-factor=1"
],
"disableHardwareAcceleration": false
}
}
}
```The test environment options shown in the above example are the default options. You can override these defaults as you like. If you want to remove a value-less electron option then prepend it with an exclamation mark (i.E. `!ignore-certificate-errors`).
The electron options can be any command-line option supported by Electron. The options can also be specified with the environment variable `ELECTRON_OPTIONS`.
Example:
```sh
ELECTRON_OPTIONS="--disable-webgl --enable-unsafe-webgpu"
```## Debugging
Normally jest-electron-runner runs a headless instance of electron when testing the renderer process. You may show the UI by adding this to your test:
```js
// ES:
(await import("@electron/remote")).getCurrentWindow().show();// CommonJS:
require("@electron/remote").getCurrentWindow().show();
```## Tips
- The main process runner can be used to test any non-browser related code, which can speed up tests roughly 2x.
- To run the main and renderer process tests in parallel, you can provide a config object to the `projects` array in the jest configuration:
```json
{
"projects": [
{
"runner": "@kayahr/jest-electron-runner/main",
"testEnvironment": "node"
},
{
"runner": "@kayahr/jest-electron-runner",
"testEnvironment": "@kayahr/jest-electron-runner/environment"
}
]
}
```## License
[MIT licensed](./LICENSE.md).