Решил еще раз попробовать внедрить использование site_prism на проекте.
Напомню, что для тестов используется Webdriver, Cucumber, Capybara.
Хотелось бы увидеть хороший пример реализации site-prism с именно такой связкой, возможно примеры на github.
И еще, удавалось ли кому-то успешно использовать Webdriver, Cucumber, Capybara с классическим page-object от Cheesy, потому как я где-то читал, его коммент о том, что они не поддерживаются.
Для меня разница как раз в избыточности.
Конкретно сейчас столкнулся с тем, что при клике на ссылку которая редиректит на другую страницу меня не перекидывает на эту страницу, а тест просто закрывается.
Для того чтобы использовать проверку в шаге “Then” мне нужно юзать " .load " конкретного класса для его открытия, однако вдруг работа функционала сломался и редирект ведет на другую страницу, однако мне придется грузить искомую.
Вот с наглядным примером, страница регистрации mail.ru
Given(/^I open registration page$/) do
@go=Go.new
@go.mail.load
#@go.mail.displayed?
end
Далее, идет When, его я описывать не стану, главное что последнее действие там это сабмит страницы интересует момент Then
Then(/^I verify registration$/) do
@registration_form = Registration_form.new
@registration_form.load
end
Ожидаемый результат: По сабмиту форма редиректится на другую страницу в независимости от заполнения шага Then
Фактический: Если шаг пустой то тест просто закрывается.
В других степах в общем проверки тоже могут быть, но не обязательно. В данном же случае вне зависимости от состояния приложения, которое ты тестишь - код твой выполнится. Верно он с работал или нет - ты не проверяешь, поэтому и шаг зеленый
Проблема в том, что юзая Capybara без обертки в срабатывают waiter-ы и я вижу как после клика происходит переход на другую страницу. А при использовании обертки этого не происходит, страница просто закрывается и всё.
Соответственно возникает предположение о том, что после клика откроется та страница которая прописана в класе, вне зависимости от того на какую ссылку ведет кнопка сабмита.
А как ты загружаешь элементы?
Вот так тест закрывается при переходе на другую страницу, если ты ее тут же не подгрузил.
page = IndexPage.new
page.load do |cp|
cp.submit_btn.click
assert_text cp.name_validation_error
end
Вот так будет норм:
page = IndexPage.new
page.load
Простите, не дочитал последнюю строчку про запуск в определенной последовательности…
В Рубях нет прямого аналога TestNG, для System и юнит-тестов есть 2 самых популярных фреймворка - Test::Unit + RSpec, однако так уж вышло, что часть фич которые есть в джава фреймворке для тестирования нет в Ruby.
Но это в общем и целом нормально, в Ruby такой подход, что для разных фич необходимо юзать разные джемы.
Если вы хотите распараллелить тесты или как-то определенно запускать то надо либо писать что-то свое либо юзать к примеру вот этот джем GitHub - grosser/parallel_tests: Ruby: 2 CPUs = 2x Testing Speed for RSpec, Test::Unit and Cucumber