Потеря сеанса 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"