Заставить Капибару провалиться на неожиданных модалах - PullRequest
0 голосов
/ 21 июня 2019

У меня есть несколько тестов для запуска и проверки оповещения JS, например:

it 'triggers a modal' do
  accept_alert('Hello world') do
    visit '/'
    click_button 'Button'
  end
end

, при котором происходит сбой:

 Capybara::ModalNotFound:
       Unable to find modal dialog with Hello world

При работе без головы я думал, что диалоговое окноне был запущен вообще, и это была проблема с моим кодом JS, но я заметил список тестов:

* Listening on tcp://127.0.0.1:3001
Modal window has been opened, but you didn't wrap your code into (`accept_prompt` | `dismiss_prompt` | `accept_confirm` | `dismiss_confirm` | `accept_alert`), accepting by default
F

Запуск в полном Chrome Я заметил, что модал запускается и с ожидаемым сообщением.Так что теперь я не уверен:

  • , почему мой accept_alert не проваливает тест, если сообщение действительно неверно (например, включены скрытые символы и сообщение на самом деле Hello world\t).или что-то в этом роде)
  • как разворачивается модал, так как мой блок accept оборачивает все тело теста?

У меня может быть глупая синтаксическая ошибка, но я думаю, что вышеприведенное верно и верноработает над другим тестом.Чтобы попытаться докопаться до сути, я хотел отключить «принятие по умолчанию» для Capybara.

Есть ли способ:

  1. Сделать любой неожиданный модал неудачным для теста (вместо принятия / отклонения)?
  2. Выйти из текста модалов по мере их появления?

1 Ответ

1 голос
/ 21 июня 2019

Принятие по умолчанию не выполняется Capybara, а выполняется драйвером, который вы используете (Cuprite, я полагаю, основываясь на полученном сообщении). Если вы перенесете действие, вызывающее появление модального режима (основываясь на показанном поведении, я предполагаю, что visit), а не весь тест, то это вызовет ошибку, если сообщение об ошибке неверно поскольку метод accept_alert ожидает модальный режим только после того, как блок завершил ожидание

accept_alert('Hello world') do
  visit '/'
end
click_button 'Button'

Поведение автоматического принятия (с предупреждением) неожиданных оповещений связано с тем, что его оригинальный дизайн основан на Poltergeist, и я не верю, что в настоящее время его можно настраивать.

...