как протестировать приложение sproutcore без браузера - PullRequest
1 голос
/ 13 декабря 2011

У меня есть приложение sproutcore, тесты которого я хочу выполнить из скрипта ant. сайт взаимодействует с приложением rails, поэтому, когда в URL появляется / backend, запрос отправляется на сервер rails. теперь, когда я ввожу 'sc-server' в командной строке, я могу посетить вкладку тесты. если сервер rails не запущен, он жалуется на то, что приложение rails не запущено, поэтому мне нужно сделать «сервер rails» из приложения rails, а затем я могу запустить тесты приложения sproutcore, открыв различные URL-адреса в браузере, пример http://localhost:4020/sproutcore/tests#myapp&test=unit/login_controller

мой вопрос: как я могу выполнить тесты без использования браузера? Какие команды я могу использовать для запуска этих тестов и получения вывода в командной строке?

1 Ответ

0 голосов
/ 15 декабря 2011

install https://github.com/ariya/phantomjs phantomjs затем вы можете запустить следующий скрипт после запуска как приложения sproutcre, так и приложения rails

var allTestsURL = "http://localhost:4020/webedge/en/current/tests.html";
var i, j;
var x = 0, y = 0;
var page = new WebPage();

page.open(allTestsURL, function (status) {
  if (status !== 'success') {
    console.log('Unable to access network');
  }
  window.setInterval(function() {
  var str = "";
  y++;
  var st = page.evaluate(function () {
    str = "";
    if(document.body.querySelector("span.status span.passed")){
      str += "passed: true";
      console.log("str: " + str);
    }
    if (document.body.querySelector("span.status span.failed")){
      str += ";failed: true";
      console.log("str: " + str);
    }
    console.log("returning " + str);
    return str;
  });
    console.log("status returned is " + st);
    if (st == "passed: true") {
      console.log("it all passes! ");
      phantom.exit(0);
    } else if(st.indexOf("failed") > 0){
      console.log("tests have failed");
      phantom.exit(1);
    }
    if(y > 25) {
      console.log("exiting with error as not yet resolved");
      phantom.exit(1);

    }
    }, 2000);
});

Примечание: версия sproutcore - 1.6.0.1, и пройденные тесты отображаются в селекторе span.passed, а неудачные тесты, если таковые имеются, в селекторе span.failed. Я не подсчитал неудачные тесты; этот скрипт просто обнаруживает, если естьявляются ошибками или нет. Это не полностью надежно, но это служит моей цели. Нет тайм-аута или чего-то еще, может быть, это следует добавить. Но мы можем основываться на нем.

скрипт на sproutcorephantomjs был исследован, но у меня не получилось. Есть идеи почему?

...