es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Capybara finaliza la sesión en cada redireccionamiento.

Cuando le digo a Capybara que haga clic en un enlace, inmediatamente finaliza la sesión en la que estoy y me lleva a la pantalla de inicio de sesión. Obviamente, cuando navego normalmente, todo funciona bien.

Este es mi archivo de rspec:

“`require ‘rails_helper’
require 'webdrivers'

RSpec.describe "Searches", driver: :selenium_firefox, js: true, type: :system do
before do
driven_by(:rack_test)
user = FactoryBot.create(:user)
login_as(user, :scope => :user)
driven_by :selenium_firefox
end

it "populate movie form" do
visit search_path
find('#home_path').click
sleep(3)
end
end

<pre><code><br />En spec_helper.rb he configurado esto:

“` Capybara.app_host = “http://localhost:3002”
Capybara.server_host = “localhost”
Capybara.server_port = “3002”

y en rails_helper.rb: config.use_transactional_fixtures = false

También he obtenido el href a través de Capybara, que es correcto `http://localhost:3002/search`.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que puede haber un problema con el proceso de inicio de sesión o autenticación. Cuando haces clic en el enlace, es posible que Capybara navegue a una página que requiere autenticación, lo que termina tu sesión y te devuelve a la pantalla de inicio de sesión.

    Una posible solución es asegurarte de que hayas iniciado sesión antes de hacer clic en el enlace. En tu bloque before, estás creando un usuario e iniciando sesión como ese usuario, pero es posible que esta sesión de inicio de sesión no se esté preservando cuando cambias al controlador selenium_firefox.

    Intenta modificar tu bloque before para solo usar selenium_firefox y asegúrate de iniciar sesión antes de visitar la página de búsqueda:

    RSpec.describe "Searches", driver: :selenium_firefox, js: true, type: :system do
      before do
        user = FactoryBot.create(:user)
        login_as(user, :scope => :user)
      end
    
      it "populate movie form" do
        visit search_path
        find('#home_path').click
        sleep(3)
      end
    end
    

    Si esto no funciona, es posible que debas profundizar en el proceso de autenticación para averiguar dónde se está terminando la sesión.

Comments are closed.