Могу подсказать на счет нескольки вещей:
1. для "распараллеливания" тестов parallel_tests, (а можно и просто написать рейк-таску, которая будет тесты запускать в разных tty). Также есть guard что бы загружать тестраном несколько процессоров, а не один
2. оптимизация site_prizm, facory_firl, vcr и т.д.
3. тестирование фронт-энда. Драйвер браузера, который Вы используете в смоук-тестах например,
запускает браузер бегает по страницах - настройте его так, что бы он не подтягивал сss и картинки (только html и js)
4. Вы перелогиниваитесь в систему before-хуком перед каждым it. Не надо так :)
Просто переопределите метод, который убивает сессию после окончания каждого it так, что бы он ее не убивал.
тогда не надо будет логиниться - это экономит море времени. Вот это мой пример, правда драйвер селениум (метод резет запускается после каждого степа, я просто его переопределил и закомментировал строки с удалением сессии):
class Capybara::Selenium::Driver < Capybara::Driver::Base
def reset!
# Use instance variable directly so we avoid starting the browser just to reset the session
if @browser
begin
#@browser.manage.delete_all_cookies <= cookie deletion is commented out!
rescue Selenium::WebDriver::Error::UnhandledError => e
# delete_all_cookies fails when we've previously gone
# to about:blank, so we rescue this error and do nothing
# instead.
end
@browser.navigate.to('about:blank')
end
end
end