Я столкнулся с тем же, но, как ни странно, я использовал некоторые другие ваши предложения, чтобы использовать 'on done', чтобы выяснить способ ожидания полной загрузки документа (включая любые динамически внедренные из JS вещи!) .
it('should have the correct title', function() {
browser.on('done', function(doc) {
console.log("DONE finally finito..");
//console.log(browser.html());
expect(doc.document.title).toMatch('.*Login');
expect(doc.document.title).not.toEqual('XXXXX');
asyncSpecDone();
});
browser.visit(LOGIN, function(err, doc) {
});
asyncSpecWait();
});
где LOGIN - это URL моей страницы входа. browser.html () распечатал всю страницу, и я увидел динамически вставленные элементы, как и ожидалось. FWIW, мое приложение использует файлы узла .ejs, которые express.js компилирует на лету; но это, вероятно, применимо к любой динамически внедренной странице, которую вы хотите протестировать с помощью зомби.
На мой взгляд, это выглядит как анти-паттерн, и я был бы рад, если бы автор исправил меня или опубликовал альтернативу. Однако это обходной путь.