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.

