Я написал свои основные модульные тесты во время тестирования в браузере (client.html), и теперь я готов настроить автоматизацию тестирования через Node, однако у меня еще нет настройки сервера Selenium , и управление, вероятно, никогда не даст одобрения стороннему сервису, например Sauce Labs, поэтому я пытаюсь запустить тест Intern через PhantomJS, используя его режим webdriver.Intern WebDriver и PhantomJS
Я бегу PhantomJS с этими параметрами:
$ phantomjs --ignore-ssl-errors=true --web-security=false --webdriver=8910
Моя Intern конфигурация выглядит следующим образом:
define({
proxyPort: 9000,
proxyUrl: 'http://localhost:9000/',
environments: [
{
browserName: 'phantom',
version: '1.9.0',
platform: 'Linux'
}
],
webdriver: {
host: 'localhost',
port: 8910
},
maxConcurrency: 3,
useSauceConnect: false,
// ...
});
Это похоже на работу по большей части, однако мой, я имею проблемы с AJAX-запросы в моих тестах. Поскольку тесты проходят через собственный сервер стажера, я добавил фильтр AJAX, чтобы убедиться, запросы направляется в нужном месте:
$.ajaxPrefilter(function (options) {
options.url = serverName + options.url;
});
Я до сих пор нахожу, что мои запросы AJAX терпят неудачу, однако. При дальнейшей проверке я обнаружил, что запросы не отправляются (AJAX не работает с readyState
из 0). Похоже, что PhantomJS не предоставляет больше информации, чем эта. Флаг --web-security=false
для phantomjs
должен гарантировать, что междоменные запросы возможны, поэтому я не уверен в причине.
В PhantomJS не указана конкретная ошибка, единственной информацией, предоставленной обработчику сбоя, является статус «ошибка».
EDIT: Я попытался выполнить ручной XMLHttpRequest без jQuery и успешно работает. Так ясно, что это что-то в конце jQuery. Включение crossDomain
не исправить.