Skip to content

Calling testWithSpectron() opens infinite windows #467

Closed
@thislooksfun

Description

@thislooksfun

Describe 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
Screen Shot 2019-09-10 at 9 54 53 PM
Screen Shot 2019-09-10 at 9 55 34 PM
Screen Shot 2019-09-10 at 9 56 07 PM

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/"));
      },
    },
  },
};

Additional context
N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions