Как я могу добиться правильного выполнения тегов Capybara @javascript в Cucumber on Rails 3?

Я заменил Webrat на Capybara в новом проекте Rails 3. Я прочитал об этом отличный пост Тима Райли (http://openmonkey.com/articles/2010/04/javascript-testing-with-cucumber-capybara), а также клонировал его репозиторий, выполнил пример функции огурца и увидел, как открылось окно браузера. Таким образом, весь стек Cucumber, Capybara, Selenium, кажется, работает нормально в этом случае.

Однако, если я создаю новый проект Rails 3, запускаю настройку аналогичного примера проекта и аннотирую сценарий с помощью @javascript, окно браузера не запускается, а сценарий Cucumber просто терпит неудачу с обычным Command failed with status (1) event (что в случае при неудачных или ожидающих шагах Cucumber срабатывает специально для использования инструментов CI).

Помимо функции @javascript, предоставляемой Capybara, все остальные функции работают нормально.

Я упускаю что-то невероятно очевидное? Есть ли способ для новичка BDD глубже изучить проблемы (трассировка стека просто показывает стандартную ошибку рейка при сбое Cucumber).

  • rvm 1.9.2-голова
  • драгоценный камень 'рельсы', '3.0.0.rc'
  • драгоценный камень 'огурец'
  • самоцвет 'огуречные рельсы'
  • жемчужина капибара
  • жемчужина 'хитрость'
  • gem 'celerity',: require => nil

person justsee    schedule 15.08.2010    source источник


Ответы (4)


На самом деле проблема связана с огурцами-рельсами и отсутствующей зависимостью от DatabaseCleaner: http://github.com/aslakhellesoy/cucumber-rails/issues#issue/36

Проблема проявляется при добавлении тега @javascript в функцию огурца. По умолчанию параметры огурца подавляют предупреждения, которые могли бы предупредить меня об этом факте. Обновив config/cucumber.yml на:

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"

ошибка отображается при запуске огурца: uninitialized constant DatabaseCleaner (NameError)

Быстрое решение в этом случае - добавить gem 'database_cleaner' в Gemfile проекта.

person justsee    schedule 18.08.2010

Capybara «ленива» в том смысле, что она сначала открывает окно браузера, когда это действительно необходимо. Если вы действительно делаете что-то, для чего требуется браузер, Capybara не откроет его.

person jnicklas    schedule 15.08.2010
comment
Я воссоздал те же шаги, зависящие от JavaScript, что и в примере Тима, но безуспешно. Еще немного головокружения, и я уверен, что ответ появится! - person justsee; 15.08.2010

Может быть, вы не установили дворняжку. Автоматизация браузера почему-то не работает с webrick, и я испытал тот же тихий сбой, который вы описываете здесь.

Добавление

драгоценный камень 'дворняга', '> = 1.2.0.beta.1'

в мой Gemfile решил это.

person user423140    schedule 17.08.2010

Я сделал пример приложения о том, как это настроить: github.com/lailsonbm/contact_manager_app/

person Lailson Bandeira    schedule 14.09.2010