Watir-webdriver или Capybara

В настоящее время я использую Watir-webdriver для всех своих передних тестов, но команда разработчиков использует Capybara для запуска своих тестов на Jenkins CI. Мы используем те же функции огурца.

Стоит ли нам проводить отдельные тесты и эффективно дважды? Какой из них лучший инструмент для использования? Я прочитал все сравнения, доступные в Интернете, и предпочитаю использовать watir-webdriver, но Capybara позволяет без проблем использовать безгласное тестирование.

Итак, какие-нибудь полезные мысли и идеи? Я на перепутье и не уверен, отказаться от Watir-webdriver и просто пойти с остальной командой разработчиков и использовать Capybara.

Ответ 1

У нас точно такая же дискуссия по моему текущему проекту. Один из разработчиков - большой поклонник Capybara, тогда как мое знакомство с Watir-webdriver.

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

Watir-webdriver позволяет мне писать слой абстракции для моих веб-страниц, определяя элементы именно так, как мне нужно/нужно (гибкость), что также означает, что слой "тестирования" все равно может выглядеть просто для людей, которые пишут тест сценарии, такие как Capybara, но обслуживание со временем будет быстрым, потому что код по сути сохранен DRY. Там немного больше авансовых затрат на то, чтобы этот слой элемента страницы был написан, но у меня есть ощущение безопасности, что будущее поддержание структуры будет быстрым.

Конечно, я предвзятый, но непредвзятый. Мне бы хотелось услышать контрапункт у поклонника Capybara.

Ответ 2

Что касается использования двух разных инструментов для одних и тех же функций огурца, зависит от тестового домена и подходит ему лучше всего. Если Watir-webdriver подходит для тестирования переднего плана лучше, чем Capybara-webdriver, или наоборот. Вам нужно будет потратить некоторое время на изучение Capybara (дизайн шип, чтобы использовать Agile parlance), чтобы сравнить его с тем, к чему вы привыкли. Старайтесь быть объективными, хотя это очень сложно (по моему опыту) с привычной основой, а затем делать анализ затрат и выгод. Прямой Стоимость может быть только время/усилия, но это все еще стоимость, которая может повлиять на доставку проекта.

Capybara не является несовместимым с программированием DRY - слой абстракции (например, Abe упоминается в его ответе) возможен с пользовательскими селекторами Capybara. После того, как они были созданы, вы можете использовать finder и матчи capybara для своих пользовательских селекторов, например:

Capybara.add_selector(:slide_show) do
  xpath { ".//div[contains(@class,'slideshow')]" }
end

Capybara.add_selector(:slide_show_element) do
  xpath { ".//div[contains(@class,'slideshowelem')]" }
end

позволяет использовать поиск Capybara;

find(:slide_show_element, 'Sunset').click

С точки зрения огурца можно передать эту строку локатора через шаг;

And I Click "Sunset" in the "Holiday Pictures" Slide Show

через определение шага, подобное этому;

Given /^(?:I |)Click "(.*?)" in the "(.*?)" Slide Show$/i do |picture,slideshow|
   within(:slide_show, slideshow) do 
     find(:slide_show_element, picture).click
   end
end

Итак, вопрос остается одним из процессов - есть ли две структуры, влияющие на ваш рабочий процесс? И будет ли согласование этих двух случаев неприемлемой потерей времени?

Ответ 3

Если вы работаете в Linux, вы можете запускать настоящие браузеры без использования watir-webdriver: http://watirwebdriver.com/headless/

Возможно, есть способ запуска браузеров без браузера с помощью watir-webdriver, если это то, что вы хотите сделать.

Лучше ли использовать один инструмент или оба зависят от вашего контекста. У вас есть проблемы с использованием обоих инструментов?