Я нашел два разных способа решения этой проблемы. Одним из них является взломать жасмин, чтобы бросить пользовательское событие, когда оно завершается. Так как я хотел просмотреть скриншот после загрузки теста, я вставил триггер события в jasmine-html.js в конце «reportRunnerResults»
$( 'body' ).trigger( "jasmine:complete" );
Тогда слушайте событие:
$( 'body' ).bind("jasmine:complete", function(e) { ... }
В моем случае я запускал jasmine в iFrame и хотел передать результаты в родительское окно, поэтому я запускаю событие в родительском элементе из моей первой привязки:
$(window.parent).find('body').trigger("jasmine:complete");
Это также возможно сделать без jquery. Моя стратегия состояла в том, чтобы опросить текст, который будет добавлен в промежуток "Finished At". В этом примере я опрашиваю каждые 0,5 секунды в течение 8 секунд.
var counter = 0;
function checkdone() {
if ( $('#test-frame' ).contents().find('span.finished-at').text().length > 0) {
...
clearInterval(timer);
} else {
counter += 500;
if (counter > 8000) {
...
clearInterval(timer);
}
}
}
var timer = setInterval( "checkdone()", 500 );