Спектрон с мокко и чай не работает - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь написать тесты со Spectron для нашего приложения Electron, но у меня возникают проблемы с настройкой. Я использую классическую установку с чай. У меня есть один файл, который содержит код установки:

const path = require("path");
const { Application } = require("spectron");

module.exports = {
  initialiseSpectron: () => {
    let electronPath = path.join(__dirname, "../../node_modules", ".bin", "electron");

    if (process.platform == "win32") {
      electronPath += ".cmd";
    }

    return new Application({
      path: electronPath,
      args: [path.join(__dirname, "../index.ts"), path.join(__dirname, "../../package.json")],
      env: {
        ELECTRON_ENABLE_LOGGING: true,
        ELECTRON_ENABLE_STACK_DUMPING: true,
        NODE_ENV: "development"
      },
      startTimeout: 10000,
      chromeDriverLogPath: "../chromedriverlog.txt"
    });
  },
  sleep: time => new Promise(resolve => setTimeout(resolve, time))
};

А затем сам тест:

const chaiAsPromised = require("chai-as-promised");
const chai = require("chai");
chai.should();
chai.use(chaiAsPromised);

const testHelper = require("./initialise");
const app = testHelper.initialiseSpectron();

// Setup Promises and start Application
before(() => app.start());

// Tear down App after Tests are finished
after(() => {
  if (app && app.isRunning()) {
    return app.stop();
  }
});

describe("Login", () => {
  it("opens a window", function() {
    return app.client
      .waitUntilWindowLoaded()
      .getWindowCount()
      .should.eventually.equal(1);
  });

  it("tests the title", () =>
    app.client
      .waitUntilWindowLoaded()
      .getTitle()
      .should.eventually.equal("VIPFY"));
});

Моя проблема в том, что я всегда получаю эту ошибку:

 1) "before all" hook in "{root}"

  0 passing (2s)
  1 failing

  1) "before all" hook in "{root}":
     Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

Так что, похоже, приложение не запускается. Но это неправда. Окно приложения открывается, но похоже, что тест не распознает это. Я уже пытался изменить путь, используя все виды синтаксиса. Но ничего не сработало. Чего мне не хватает?

1 Ответ

0 голосов
/ 16 октября 2019

Вы пытались увеличить время ожидания для мокко?

Иногда у меня был сбой в первый раз, а затем работал со второй попытки.

Смотрите рабочий пример здесь с Electron 6:

https://github.com/florin05/electron-spectron-example

...