¿Puedo usar antes: todos con capibara?

Tengo un bloque de descripción como este:

describe "Documents" do subject { page } let (:course) { FactoryGirl.create(:course) } describe "new" do before do visit new_course_document_path(course) fill_in "Name", with: "TestDocument" attach_file "Original document", "#{Rails.root}/spec/fixtures/03_GUI_concurrency.pdf" end it { should have_selector('title', text:"Upload document")} it { should have_selector('h1', text:"Upload document")} describe "when clicking upload" do before { click_button "Upload Document" } it "should have the document name" do subject.should have_selector('p', text: "TestDocument") end it "should have 22 pages" do subject.should have_selector('.page', count: 22) end describe "when visiting the course page" do before { visit course_path(course) } it { should have_selector 'li', text: "TestDocument"} end end end 

La prueba es bastante costosa ya que se realiza un trabajo importante para guardar el documento. Eso está bien, pero es aún más lento, ya que en realidad está haciendo esa carga 3 veces. Entonces, lo más obvio es hacer que los bloques anteriores se conviertan en antes: todos los bloques, pero cuando hago eso, solo se ejecuta correctamente el primer bloque {} y luego los que se ejecutan en una página vacía, por lo que fallan.

Antes: todos los bloques deben funcionar con capibara, y si es así, ¿qué estoy haciendo mal aquí?

Capybara restablece la sesión después de cada ejecución de ejemplo, por lo que cuando se mudó a visit new_course_document_path(course) en el bloque before (:all) , no tenía nada que visitar a partir de un segundo ejemplo.

Recomendaría ejecutar solo las pruebas en las que estás trabajando. Esto podría lograrse con una opción de etiqueta RSpec o guard-rspec , y le ahorrará MUCHO tiempo.