Как я могу регистрировать ошибки javascript с помощью Poltergeist/Capybara/Rspec?

Я использую Rspec/Capybara с Poltergeist в качестве драйвера для написания тестов для некоторых крупных веб-приложений.

Моя проблема в том, что я хотел бы записывать сообщения, которые появляются на консоли, но пока мне не удалось этого сделать.

Мне известны варианты js_errors и phantomjs_logger, но у меня возникли некоторые проблемы с ними:

  • если я устанавливаю js_errors: false, файл, который я указываю в phantomjs_logger, остается пустым;
  • если я устанавливаю js_errors: true, console.log сообщения регистрируются в файле, указанном в phantomjs_logger, но тогда почти все мои спецификации терпят неудачу из-за ошибок javascript, которые могут даже не иметь отношения к тестируемому мной примеру навигации.

Любая идея о том, как я могу сохранить сообщения консоли, не нарушая спецификации при каждой ошибке js?

УТОЧНЕНИЕ: Я не контролирую разработку, моя задача - проверить стабильность всего стека приложений в различных средах, доступ из внешнего интерфейса, поэтому об устранении всех ошибок javascript не может быть и речи. Спецификации, которые я пишу, также должны игнорировать ошибки javascript, если они не мешают использованию интерфейса.


person Eugenio Laghi    schedule 12.08.2016    source источник
comment
Вы пробовали вариант phantomjs_logger, чтобы все сообщения отправлялись на console.log через js?   -  person slowjack2k    schedule 12.08.2016
comment
Да, как я уже сказал, я пробовал phantomjs_logger, но он, кажется, получает сообщения console.log только тогда, когда я устанавливаю js_errors: true. И это не то, чем я хочу заниматься.   -  person Eugenio Laghi    schedule 12.08.2016


Ответы (1)


Вы не можете. Клиент PhantomJS перехватывает сообщения об ошибках javascript и добавляет их в массив. Затем, когда команда завершается, если js_errors == true, этот массив проверяется, и если он не пустой, возвращаются ошибки javascript и вызывают ошибку в тесте. В полтергейсте нет другого API для доступа к этим ошибкам. Похоже, вам нужно обсудить со своим менеджером целесообразность простого игнорирования ошибок JS, если они явно не мешают использованию — это потенциально опасная практика разработки.

person Thomas Walpole    schedule 12.08.2016