Потеря сеанса webdriverio при тестировании перезапуска электронного приложения с помощью spectron

Я использую spectron для запуска интеграционных тестов против моего приложения electron. Все работает нормально, кроме попытки проверить, что настройки приложения сохраняются должным образом между перезапусками приложений.

во время выполнения тестов мое приложение запускается с новым временным userData каталог для каждого теста, который гарантирует, что тесты изолированы. Это означает, что тестирование персистентности должно идеально происходить в одном тесте, и для этого я должен перезапустить приложение в в середине теста. Есть app.restart метод, поэтому это должно поддерживаться правильно?

Я использую следующий тестовый код spectron:

// save some settings here

await app.restart();
await app.client.waitUntilWindowLoaded()

// do some more checking to ensure the app is fully loaded
// check the settings here

однако я получаю следующую ошибку:

Error: waitUntilWindowLoaded Promise was rejected with the following reason: 
Error: A session id is required for this command but wasn't found in the response payload

Как правильно это сделать? Я также попытался остановить экземпляр приложения и запустить новый с аналогичными результатами.

2 ответов


Это, кажется, работает

// save some settings here

await app.stop();

app = new Application({ ... });
await app.start();
await app.client.waitUntilWindowLoaded();

// do some more checking to ensure the app is fully loaded
// check the settings here

следующим snippsets работ,

import test from 'ava'
import util from '../util'

test(async t => {
  // This runs after each test and other test hooks, even if they failed
  let app = util.createApp()
  app = await util.waitForLoad(app, t)
  await app.restart()
  await app.client.waitUntilWindowLoaded()
  // app = await util.waitForLoad(app, t)
})

работает с "spectron": "^3.5.0"