IIC3745-2020-2/syllabus

Test con Capybara no encuentra elemento css - ejemplo clase create user

Closed this issue · 5 comments

Hola! Estoy implementando algo equivalente al ejemplo mostrado en clases para create_user. Estoy teniendo el problema de que capybara no encuentra el elemento css, aunque sí encuentra el texto:
image

Al replicar los pasos del test en el navegador y usar el inspector, puedo ver que el selector sí existe:
image

Este es el segmento de código:
image

Alguna idea de qué podría estar fallando? En internet no encontré mucho

Hola,

Si te fijas en el detalle del error de la prueba el problema no es que no encuentra el elemento HTML, sino que el texto no es el mismo que espera. La diferencia que hay es que uno dice this client y el otro dice this user.

Este ejemplo demuestra la importancia de que los tests tengan nombres y errores descriptivos, para que cuando fallen sea más inmediato entender por qué.

Saludos,

Toda la razón profe, muchas gracias!

Me quiero sumar a la duda porque tengo un problema similar.

Este es el código de mi test, donde @transaction se define en el before do mediante una factory (que funciona bien, ya que el test del new se supera correctamente)

image

El html-css de la vista es el siguiente:

image

Y el error que me entrega es el siguiente:
image

Pienso que el error se debe a la definición de @transaction, por lo que no se ingresa a la vista que esperas, pero es difícil estar seguro sin mayor contexto. Por otra parte, no entiendo a qué te refieres con que funciona para el new ya que para esa acción no se necesita tener un registro en la base de datos.

Te recomiendo que dentro del test hagas print (o uses byebug) para ver los valores de las variables @transaction y page. También puede ser más fácil usar los helpers de rutas más que escribirla con string interpolation: visit edit_transaction_path(@transaction)

Me sirvió el consejo de printear el html de page, no se me había ocurrido. El problema que tengo ahora es que no logra encontrar el current_user dentro del form, por lo que el test falla y se cae.
Actualmente tengo la siguiente configuración en mi rails_helper.rb para usar devise:
image

Y hago el log in de la siguiente manera:
image

El error es el siguiente:
image

Notas:

  • Estos tests están en la carpeta features.
  • He probado con sign_in y me da error por env
  • Factory crea bien a los usuarios, ya que se ha probado en otros tests y funcionan bien
  • El problema es definitivamente el current_user, probé hardcodeando en la vista cambiando solo eso y funcionó

Edit

Cambié before :all por before :each y funcionó