Войти с помощью github
Форум /

Пишу отдельным топиком, тк это уже подтема — написание тестов.

Меня интересует как сделать так, чтобы скриншот был снят только после какого-то события (например, на объекте window). Это важно для тестирование SPA, они не сразу отрисовываются, а из JavaScript.

Для простоты я пока не пользуюсь своим кастомным событием, а просто проверяю, работает ли с load. Я не нашла в документации возможности реагировать на события, поэтому пытаюсь пользоваться флагом и функциями executeJS и waitForJSCondition.

Текст теста вот такой:

var gemini = require('gemini');

var examples = [
  '1.1',
  '1.2-1',
  '2.1'
];

examples.forEach(function(example) {

  gemini.suite(example, function(suite) {
      suite.setUrl('/styleguide/#/section/' + example + '/fullscreen')
          .setCaptureElements('body')
          .capture('plain', function(actions, find){
              actions.executeJS(function(window) {

                  window.addEventListener('load', function() {
                      window.doTake = true;
                  });

              })
              actions.waitForJSCondition(function(window) {
                  return window.doTake;
              }, 3000);
          });
  });

});

Но ничего не получается, на снятии скриншотов получаю отлуп "Condition was not met in 3000ms".

Важно отметить, что если я просто пользуюсь actions.wait(3000), то все скриншоты снимаются как надо.

Теперь вопросы:

  • Правильно ли я делаю ожидание события на window или может быть есть какой-то более простой путь?
  • Почему не работает?
  • Как дебажить тесты? Я хочу писать console.log и видеть, что там происходит.

/cc @arikon @sevinf