Testing ElectronJS With Mocha & Spectron
In this post I will be outlining how to test your ElectronJS Apps with spectron and mocha.
First to get started we need to install spectron.
!!!!IMPORTANT!!!!! this threw me for a while with compatibility issues go to the GitHub page and make sure you are using a spectron version compatible with your ElectronJS version.
https://github.com/electron-userland/spectron
I am using.
"devDependencies": { "electron": "^13.0.0", "mocha": "^9.1.2", "spectron": "^15.0.0" },
If you add the packages with the correct versions you can just run.
npm install
Now in your package.json add you test run command.
"scripts": { "test": "NODE_ENV=test mocha" },
Use the example from the GitHub page.
const Application = require('spectron').Application const assert = require('assert') const electronPath = require('electron') // Require Electron from the binaries included in node_modules. const path = require('path') //const utils = require('../utils/helpers') describe('Application launch', function() { this.timeout(10000) beforeEach(function() { this.app = new Application({ path: electronPath, args: [path.join(__dirname, '..')] }) return this.app.start() }) afterEach(function() { if (this.app && this.app.isRunning()) { return this.app.stop() } }) it('shows an initial window', function() { return this.app.client.getWindowCount().then(function(count) { assert.equal(count, 1) // Please note that getWindowCount() will return 2 if `dev tools` are opened. // assert.equal(count, 2) }) }) /*it('test image resize', async () => { const img = await utils.resizeImage({ outputfolder: '/Users/samueleast/Desktop/S3AppUnitTests', media: '/Users/samueleast/Desktop/Doctor.png', height: 20, width: 20 }); assert.equal(img, 'Success') })*/ })
You can now run.
npm test
And start to test your code.
I kept getting this error.
Error: Timeout of 10000ms exceeded. For async tests and hooks, ensure "done()" is called;
Make sure you are using these versions.
"devDependencies": { "electron": "^13.0.0", "mocha": "^9.1.2", "spectron": "^15.0.0" },
It seems spectron is no longer being maintained probably worth finding another testing tool for electron. If anyone has any suggestions let me know.