2015-12-15 3 views
3

Я использую Poltergeist/Capybara для моих тестов:Сделать Полтергейст регистронезависимо

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, { 
     timeout: 60, 
     phantomjs_options: ['--load-images=no'], 
     case_insensitive: true # <-- doesn't work 
    }) 
    end 
end 

, но я заметил, что я должен переписать много тестов, так как водитель Полтергейст, кажется case-sensitive. Есть ли что-нибудь, что я могу передать, чтобы изменить это?

ответ

3

Поскольку @eugen упоминает, что все поиски в capybara по умолчанию чувствительны к регистру. Проблема, которую вы упоминаете в том, что нужно переписывать тесты, обычно возникает при переходе от драйвера, который делает/не поддерживает css text-transform, к тому, что делает-not/does - поэтому текст, который соответствует, или не имеет текст css, преобразование (прописные/строчные буквы/заглавные буквы/...). Если вы хотите иметь возможность переключаться между драйверами и действительно нуждаться в нечувствительности к регистру, вы можете передавать регулярные выражения различным разборам

expect(page).to have_text(/case insensitive text/i) 
expect(page).to have_selector(:css, '#div1', text: /case insensitive text/i) 
+0

Хорошо, что имеет смысл. Мой водитель раньше был нечувствительным к регистру. Однако я хотел бы использовать 'expect (page) .to has_content' вместо' have_text'. Это прекрасно работает с вашим ответом? – supersize

+0

Действительно! Спасибо за вашу помощь! – supersize

1

Вы можете использовать регулярное выражение при сравнении строк

expect(page.body).to match(%r{#{string}}i) 

Источник: Case insensitive Rspec match

1

Все запросы в capybara чувствительны к регистру, нет глобальная опция, чтобы изменить это. Если вам нужно выполнить нечувствительность к регистру, вам нужно будет выполнить поиск по базе поиска.

Смежные вопросы