visiky / jest-electron

❯ ⚛️The easiest way to run and debug test cases in electron with jest.

Home Page:https://github.com/hustcc/jest-electron

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

jest-electron

Easiest way to run jest unit test cases in electron.

When we run unit test in Jest, it is actually running in the node environment, or virtual browser environment(e.g. JSDOM) mocked by NodeJS. Sometimes we need a lot of Jest mocks for running code with no throw, such as: jest-canvas-mock, jest-storage-mock, @jest/fake-timers and so on. This is solved by Jest-Electron.

Build Status npm npm

  1. Technological ecology of Jest.
  2. Complete and real browser environment.
  3. Multi-renderer for running performance.
  4. Running and debug is better then mock.

Installation

  • Add into devDependencies
$ npm i --save-dev jest-electron
  • Update Jest config
{
  "jest": {
+    "runner": "jest-electron/runner",
+    "testEnvironment": "jest-electron/environment"
  }
}

Notice: update the runner configure, not testRunner.

Related

Those will be helpful when run test case with jest-electron.

CI

Run test cases with jest-electron for continuous integration.

  • GitHub action

Running on macOS will be ok.

- runs-on: ubuntu-latest
+ runs-on: macOS-latest
  • travis

Update .travis.yml with electron supported.

language: node_js
node_js:
  - "8"
  - "9"
  - "10"
  - "11"
  - "12"
+ addons:
+   apt:
+     packages:
+       - xvfb
+ install:
+   - export DISPLAY=':99.0'
+   - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
+   - npm install
script:
  - npm run test

Env

  • debug mode

Keep the electron browser window for debugging, set process env DEBUG_MODE=1.

DEBUG_MODE=1 jest
  • no sandbox

Run electron with --no-sandbox, set process env JEST_ELECTRON_NO_SANDBOX=1.

JEST_ELECTRON_NO_SANDBOX=1 jest

License

MIT@hustcc.

About

❯ ⚛️The easiest way to run and debug test cases in electron with jest.

https://github.com/hustcc/jest-electron

License:MIT License


Languages

Language:TypeScript 85.6%Language:CSS 10.8%Language:HTML 3.1%Language:JavaScript 0.4%