Как я могу представить свои тесты CasperJS как их собственный REST API?

Я использую простые мониторы времени безотказной работы, такие как statuscake, uptimerobot и т. д., чтобы убедиться, что мои сайты работают. Проблема в том, что некоторые сайты представляют собой приложения ASP.NET со сложными __doPostback взаимодействиями — в основном, пользователь заполняет форму, нажимает «Отправить», а затем сгенерированный ASP.NET javascript переводит их на следующую страницу.

Моя идея состояла в том, чтобы написать сценарий CasperJS (в основном более простой API для PhantomJS), чтобы имитировать это взаимодействие с пользователем и проверить, чтобы убедиться, что он работает.

У меня есть тест, работающий в CasperJS, и теперь я хотел бы представить тест как собственный REST API, чтобы мой монитор безотказной работы мог запускать его каждые несколько минут. REST API вернет 200, если тест пройдет успешно; какой-то код ошибки, если нет.

Обычно я бы бросал restify или express вокруг логики, но вам нужно запускать CasperJS через casperjs file.js, а не через node, что означает, что я не могу запустить restify внутри него. Я просмотрел PhantomJS, Nightmare и Zombie. Если вы точно знаете, что это сработает, дайте мне знать; в противном случае у меня были проблемы с их API, которые привели меня обратно к CasperJS.

Это немного похоже на представление набора тестов как API, если это дает какие-то идеи.

Какие-либо предложения?


person Tobias Fünke    schedule 23.11.2015    source источник


Ответы (1)


PhantomJS имеет встроенный сервер, который вы можете использовать с CasperJS, как показано в этом ответе: CasperJS передает данные обратно в PHP

person Vaviloff    schedule 23.11.2015
comment
Спасибо @Vaviloff, кажется, это работает, но комментарий ниже предполагает наличие утечки памяти, и я думаю, что понимаю, почему. casper.run() впоследствии будет .exit() по умолчанию (что убивает сервер). Если вы переопределяете его функциональность, передавая функцию обратного вызова, вы должны сами вызывать .exit(), чего в примере нет. Из-за этого каспер продолжает работать, но память накапливается. - person Tobias Fünke; 23.11.2015