Тестирование расширения кода Visual Studio с помощью Spectron - Как определить, когда VSCode готов?
Цель: выполнить реальные сквозные тесты для расширения VSCode с использованием Spectron.
В качестве примера я установил расширение vim.
Я адаптировал пример использования из README Spectron следующим образом:
var Application = require('spectron').Application
var assert = require('assert')
describe('VSCode extension', function () {
this.timeout(10000)
beforeEach(function () {
this.app = new Application({
path: '.vscode-test/VSCode-linux-x64/bin/code',
args: [
'--extensionDevelopmentPath=' + process.cwd(),
'--locale=en',
process.cwd(),
],
requireName: 'nodeRequire',
})
return this.app.start()
})
afterEach(function () {
if (this.app && this.app.isRunning()) {
return this.app.stop()
}
})
it('suggest commands', function () {
return this.app.client
.waitUntilWindowLoaded()
//.pause(5000)
//.waitUntilTextExists('span', 'OPEN EDITORS', 10000)
.keys('F1')
.waitForVisible('.quick-open-widget:not(.hidden)')
.keys('vim')
.waitForVisible('.quick-open-entry*=Vim: Show Command Line')
})
})
Проблема: Как точно определить, готов ли VSCode.
призвание client.waitUntilWindowLoaded()
недостаточно В некоторых тестовых прогонах ввод текста через client.keys(...)
в палитре команд (F1) не предлагает никаких команд.
Я не хочу использовать pause(...)
после waitUntilWindowLoaded()
поскольку это тратит впустую полезное время и может все еще быть недостаточным, когда система находится под большой нагрузкой.
На данный момент я только что придумал .waitUntilTextExists('span', 'OPEN EDITORS', 10000)
который, кажется, работает большую часть времени. Иногда это заканчивается временем ожидания.
Есть ли что-нибудь более надежное (в DOM), которое устанавливается VSCode и может быть проверено Spectron, утверждающим, что VSCode действительно готов?