Пишу отдельным топиком, тк это уже подтема — написание тестов.
Меня интересует как сделать так, чтобы скриншот был снят только после какого-то события (например, на объекте 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