Rspec + Capybara + Poltergeist не может отправить форму

У меня есть форма в приложении Rails, в которой используется подключаемый модуль jQuery tokenInput. Чтобы протестировать форму, я добавил полтергейст в качестве js-драйвера и добавил js: true в спецификации. Однако, как только я включаю javascript для любой заданной спецификации, действие click_button ничего не делает. Я поместил puts в первую строку контроллера, и он никогда не выполняется.

Форма отлично работает как пользователь в браузере, и тест выполняется правильно без js: true. Однако без включенного javascript я не могу использовать поле tokenInput.

Нет сообщения об ошибке; если мой тест просто:

spec 'test something', js: true do
  visit new_projects_path
  click_button 'Create Project'
end

Это проходит; однако контроллер никогда не достигается.

Я получаю эти предупреждения каждый раз, когда запускаю спецификацию с полтергейстом:

2013-11-05 07:39:42.087 phantomjs[5629:507] * ПРЕДУПРЕЖДЕНИЕ. Метод userSpaceScaleFactor в классе NSView устарел в версии 10.7 и более поздних. Его не следует использовать в новых приложениях. Вместо этого используйте convertRectToBacking:. 2013-11-05 07:39:42.502 phantomjs[5629:507] Примечание по производительности CoreText: клиент вызвал CTFontCreateWithName(), используя имя «Times New Roman», и получил шрифт с именем PostScript «TimesNewRomanPSMT». Для лучшей производительности используйте только имена PostScript при вызове этого API. 2013-11-05 07:39:42.502 phantomjs[5629:507] Примечание о производительности CoreText: установите точку останова на CTFontLogSuboptimalRequest для отладки. 2013-11-05 07:39:42.588 phantomjs[5629:507] Примечание по производительности CoreText: Клиент вызвал CTFontCreateWithName(), используя имя «Times New Roman», и получил шрифт с именем PostScript «TimesNewRomanPSMT». Для лучшей производительности используйте только имена PostScript при вызове этого API. 2013-11-05 07:39:42.590 phantomjs[5629:507] Примечание по производительности CoreText: Клиент вызвал CTFontCreateWithName(), используя имя «Times New Roman», и получил шрифт с именем PostScript «TimesNewRomanPSMT». Для лучшей производительности используйте только имена PostScript при вызове этого API.

Я также попробовал спецификации с помощью capybara-webkit, и он умирал ужасной смертью всякий раз, когда нажимал кнопку формы. Он также никогда не попадал в контроллер.

Вот код для ProjectsController#new

= form_for project do |f|
  %div.row
    %div.large-3.columns
      %label
        %strong Name: 
    %div.large-6.columns
      = f.text_field :name, { placeholder: "Name" }
    %div.large-3.columns
  %div.row
    %div.large-3.columns
      %label
        %strong Description: 
    %div.large-6.columns
      = f.text_area :description, { placeholder: "Description", class: "long" }
      %aside.instruction
        This field accepts Markdown formatted text
    %div.large-3.columns
  %div.row
    %div.large-3.columns
      %label
        %strong Short Description:
    %div.large-6.columns
      = f.text_area :short_description, { placeholder: "Short Description", class: "short"}
    %div.large-3.columns
  %div.row
    %div.large-3.columns
      %label
        %strong Source:
    %div.large-6.columns
      =f.text_field :source, { placeholder: "Link to source or \"Closed\"" }
    %div.large-3.columns
  %div.row
    %div.large-3.columns
      %label
        %strong Technologies:
    %div.large-6.columns
      = f.text_field :technology_tokens, data: { load: @project.technologies }
    %div.large-3.columns
  %div.row
    %div.large-6.large-centered.small-6.small-centered.columns
      = f.submit

Руби 2, Рельсы 4, ОС Х Маверикс


person Stuart    schedule 05.11.2013    source источник
comment
Привет. Что касается этих предупреждений, у меня было что-то очень похожее при использовании капибары на платформе MacOS Mavericks, но мне удалось обойти это. Вот информация: stackoverflow.com/a/19753928/632735   -  person Neil Billingham    schedule 05.11.2013
comment
попробуйте советы по отладке капибары, упомянутые здесь: nofail.de/2013/ 10/отладка-приложений-rails-в-разработке   -  person phoet    schedule 05.11.2013


Ответы (1)


Я вернулся к capybara-webkit, и на этот раз это сработало. Я не верю, что что-то изменил; возможно что-то обновили и это была кратковременная несовместимость?

Я почти уверен, что предупреждения - это вещь Qt; они начали появляться для всех в последнее время. Я просто подумал, что включу их на случай, если я что-то упустил в них.

person Stuart    schedule 07.11.2013