У меня возникла проблема с тем, как Intern запускает тесты и пытается тестировать блоки, которые используют вызовы AJAX с помощью jQuery. Поскольку Intern обслуживает тестовый клиент на сервере WebDriver (в этом случае phantomjs --webdriver=8910
), я заканчиваю тесты, запущенные на localhost:9000
. Это, очевидно, вызывает проблемы с одинаковой исходной политикой.Тесты модулей Intern AJAX
Я могу обойти это и сделать междоменные запросы, но после того, как требуется cookie проверки подлинности, я заблокирован, потому что, очевидно, наш бэкэнд не устанавливает файлы cookie для localhost
, поэтому у меня нет доступа к этим куки.
Я попытался изменить параметр proxyUrl
, чтобы указать на наш сервер в нескольких различных перестановок, но до сих пор ничего не работало:
https://my.server.com/
https://my.server.com/js/
https://my.server.com/js/intern/
https://my.server.com/js/intern/client.html
https://my.server.com/js/intern/client.html?config=tests/intern
Просмотр журналов WebDriver Я заметил, что стажер говорит серверу груз http://localhost:9000/__intern/client.html?config=...
. Я попытался установить proxyUrl
на https://my.server.com/js/
и символическую ссылку __intern
на номер intern
, но либо тесты не запускаются, либо они не сообщаются до runner.js
. В PhantomJS журналы, когда я бегу этот способ выглядеть примерно так:
[DEBUG - 2013-05-24T15:17:50.930Z] SessionReqHand - _postUrlCommand - Session '194ff0a0-c485-11e2-9c64-9986b0c95ae1' is about to load URL: https://my.server.com/js/__intern/client.html?config=tests%2Fintern&sessionId=194ff0a0-c485-11e2-9c64-9986b0c95ae1&reporters=webdriver
[DEBUG - 2013-05-24T15:17:50.943Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - Page Loading in Session: true
[DEBUG - 2013-05-24T15:17:50.962Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _oneShotCallback - onLoadFinished
[DEBUG - 2013-05-24T15:17:50.962Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - onLoadFinished: success
[DEBUG - 2013-05-24T15:17:51.051Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - Page Loading in Session: false
[DEBUG - 2013-05-24T15:17:51.051Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _resetOneShotCallbacksDecorator
[DEBUG - 2013-05-24T15:17:51.052Z] SessionReqHand - _SuccessHandler - status: success
[DEBUG - 2013-05-24T15:17:51.184Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - page.onConsoleMessage - Tests complete
Тест бегун затем вешает и никогда не получает результаты испытаний, однако, так как proxyUrl
не указал на прокси-сервер, который работает стажер.
EDIT 5/28
Стоит отметить, что многое из этого можно обойти серверные модификации (хотя в идеале тест стек должен быть настраиваемым, чтобы соответствовать кодовой базе, а не принуждать базы коды чтобы соответствовать), но давайте просто скажем, что в этом случае это не вариант.
В идеале, я хотел бы, чтобы Intern настраивался для загрузки client.html
с указанным URL-адресом, а затем передал POST-сообщение репортера в прокси-сервер localhost:9000
через некоторые средства, совместимые с кросс-началом, например JSONP. Я не могу найти какую-либо другую разумную альтернативу, поэтому похоже, что на данный момент Intern просто не поддерживает полностью единичные тесты, которые общаются с задней стороной через AJAX.
Спасибо!Я не думал использовать обратный прокси-сервер раньше, чем просто потому, что у нас уже есть один для нашего конца, и я думал, что это будет мешать, но, глядя в него, это не должно быть проблемой. – coreyschram