Тестирование расширения кода 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 действительно готов?

0 ответов

Другие вопросы по тегам