Calling testWithSpectron() opens infinite windows
See original GitHub issueDescribe the bug
Calling testWithSpectron() hangs the tests, and starts opening as many Electron windows as it can until the tests time out.
To Reproduce Run the following spec:
import testWithSpectron from "vue-cli-plugin-electron-builder/lib/testWithSpectron";
import chai, { expect } from "chai";
import chaiAsPromised from "chai-as-promised";
chai.use(chaiAsPromised);
describe("Application launch", function() {
this.timeout(30000);
beforeEach(function() {
console.log("Before Each -- testWithSpectron()");
return testWithSpectron().then(instance => {
console.log("testWithSpectron().then");
this.app = instance.app;
this.stopServe = instance.stopServe;
});
});
beforeEach(function() {
console.log("Before Each -- chaiAsPromised");
chaiAsPromised.transferPromiseness = this.app.transferPromiseness;
});
afterEach(function() {
console.log("After");
if (this.app && this.app.isRunning()) {
return this.stopServe();
}
});
it("opens a window", function() {
console.log("opens?");
const gwc = this.app.client.getWindowCount();
console.log(gwc);
return expect(gwc).to.eventually.have.at.least(1);
});
});
Expected behavior I expected the output
> Before Each -- testWithSpectron()
> testWithSpectron().then
> Before Each -- chaiAsPromised
> opens?
> After
And for it to only open one Electron window (or maybe even 0, if it should be headless).
Instead, it opens 5-10 windows (just keeps going until Mocha times out).
Screenshots

Environment (please complete the following information):
- OS and version: macOS 10.14.6 (18G87)
- node version: v12.5.0
- npm version: 6.9.0
- yarn version (if used): N/A
- vue-cli-plugin-electron-builder version : 1.4.0
- electron version: 6.0.7
- other vue plugins used:
- @vue/cli-plugin-babel: 3.11.0
- @vue/cli-plugin-eslint: 3.11.0
- @vue/cli-plugin-unit-mocha: 3.11.0
- @vue/cli-service: 3.11.0
- @vue/test-utils: 1.0.0-beta.29
- custom config for vcp-electron-builder:
// vue.config.js
const path = require("path");
module.exports = {
configureWebpack: {
resolve: {
alias: {
Disciplines$: path.join(__dirname, "src/assets/earthdawn/disciplines"),
Races$: path.join(__dirname, "src/assets/earthdawn/races"),
Skills$: path.join(__dirname, "src/assets/earthdawn/skills"),
Talents$: path.join(__dirname, "src/assets/earthdawn/talents"),
},
},
},
chainWebpack: config => {
config.module
.rule("yaml")
.test(/\.ya?ml$/)
.use("js-yaml-loader")
.loader("js-yaml-loader")
.end();
},
pluginOptions: {
electronBuilder: {
chainWebpackMainProcess: config => {
config.resolve.alias.set("@", path.join(__dirname, "src/"));
},
},
},
};
- (if possible) link to your repo: https://github.com/thislooksfun/earthdawn
Additional context N/A
Issue Analytics
- State:
- Created 4 years ago
- Reactions:2
- Comments:6 (2 by maintainers)
Top Results From Across the Web
Electron app opening multiple windows or processes in ...
My electron app works as expected but it keeps on opening new windows when I run spectron test that tests for number ...
Read more >Testing and Debugging | Vue CLI Plugin Electron Builder
vue-cli-plugin-electron-builder exports a testWithSpectron function. ... You will have to call app.start() and app.client.waitUntilWindowLoaded() before ...
Read more >Build an Electron App in Under 60 Minutes - YouTube
In this video we will build a desktop application using Electron.js which allows us to build desktop apps using only JavaScript.
Read more >Easily Build Your Vue.js App For Desktop With Electron
Open a terminal in the directory of your app created with Vue-CLI 3 or 4 (4 is ... import at the first argument...
Read more >Deep Links | Electron
This is due to Windows requiring additional code in order to open the contents of the protocol ... This method will be called...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

With the v2.0.0 beta, you pass the spectron module to the
testWithSpectronfunction, so you can install the proper version of spectron to match your electron version.V2.0 of this plugin includes an upgrade to spectron. I will release it soon, but for now:
yarn add -D vue-cli-plugin-electron-builder@alpha.