Introducción

1

Curso Intermedio de Ruby on Rails: Migración y Optimización Avanzada

2

Migración de Rails a MongoDB con Mongoid y Pruebas Automatizadas

3

Gestión de Múltiples Versiones de MongoDB en Linux

4

Migración de Rails a MongoDB con Mongoid: Configuración Inicial

5

Migración de Modelos de Active Record a Mongoid

6

Migración completa de aplicaciones con MongoDB y Rails

Pruebas

7

Pruebas Automatizadas: Introducción a TDD y BDD en Desarrollo de Software

8

Creación de Fábricas Automatizadas con FactoryBot y Faker en Rails

9

Integración de Librerías para Pruebas Automatizadas en Rails

10

Pruebas de Modelos en Rails con Mongoid y RSpec

11

Pruebas de Validación y Guardado en Modelos Rails

12

Validación y Pruebas de Modelos en Ruby on Rails

13

Pruebas de Integración en Rails: Configuración y Ejecución Básica

14

Creación y prueba de tareas con métodos POST en Rails

15

Automatización de Pruebas con Headless Browser y Capybara en Rails

16

Pruebas de Sistema con KPIBara y WebDriver en Rails

17

Automatización de Pruebas de Sistema con Selenium y JavaScript

Interacción dinámica

18

Uso de CoffeeScript con Rails y Webpacker: Integración y Ejemplos

19

Integración de Selectize con RAILs y Webpacker

20

Formularios Anidados en Rails: Uso de Simple Form y Cocoon

21

Implementación Selectize en Formularios Dinámicos con Kokoon y CafeScript

Notificaciones

22

Envío de Emails Automático al Crear Tareas

23

Introducción a Service Objects en Ruby on Rails

24

Pruebas de TDD para Service Object de Notificaciones por Correo

25

Creación de Service Objects para Envío de Correos en Ruby on Rails

26

Procesos en Background con Sucker Punch en Rails

27

Pruebas con Doubles en Rails usando Sucker Punch

Ciclos de vida

28

Máquinas de Estado Finito: Conceptos y Aplicaciones Prácticas

29

Creación de Máquinas de Estados con AASM en Ruby on Rails

30

Creación de Service Object para Gestión de Estados de Tareas en Rails

31

Acciones de Controlador y Pruebas en Ruby on Rails

32

Integración de AJAX en Gestión de Estados de Tareas en Ruby on Rails

Cierre

33

Optimización de rendimiento en aplicaciones web con Ruby on Rails

34

Migración y Pruebas Automatizadas en Ruby on Rails

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Automatización de Pruebas de Sistema con Selenium y JavaScript

17/34
Recursos

¿Cómo interactuar con navegadores headless para pruebas de JavaScript dinámico?

En la era del desarrollo web, las aplicaciones dinámicas son el estándar, lo que complica realizar pruebas de sistema debido a su naturaleza interactiva. Aprender a utilizar navegadores headless, como lo es Chrome Headless junto con Selenium, es crucial para sortear estas complicaciones. Aquí exploraremos cómo configurar y ejecutar pruebas que impliquen comportamientos dinámicos de JavaScript en una página HTML.

¿Cómo resolver problemas con pruebas de sistema utilizando RSpec?

La implementación de pruebas de sistema a menudo requiere ajustar el DSL (Domain Specific Language) y sus comportamientos predefinidos. Al ejecutar comandos como arspec, podrías enfrentarte a errores que indiquen la falta de configuraciones clave como la palabra “with”. Para solucionarlo:

  • Añade la palabra clave with en cada uno de los inputs o campos necesarios en tus pruebas.
  • Haz lo mismo para campos que requieran comportamientos dinámicos como la fecha de vencimiento (due date).

Estas acciones permitirán que las pruebas se ejecuten correctamente en su entorno de RSpec.

¿Cómo trabajar con comportamientos dinámicos de JavaScript?

Los comportamientos dinámicos, como la adición de HTML al DOM mediante JavaScript, son difíciles de manejar usando pruebas tradicionales. Por ejemplo, al hacer clic en un enlace que debería agregar participantes, el DOM cambia. Para simular este tipo de interacción:

  1. Debbuging del DOM: Utiliza la consola de comandos para inspeccionar el DOM después de eventos de interacción para confirmar cambios en contenedores, clases, o estructuras esperadas en el HTML.

  2. Cambio de Driver: Configura un driver que soporte estas interacciones, como Selenium con Chrome Headless, configurando las dependencias necesarias como el Chrome Driver.

config.before(:each, type: :system, js: true) do
  driven_by :selenium, using: :headless_chrome
end
  1. Versionamiento de herramientas: Asegúrate de instalar y emparejar la versión específica del Chrome Driver con la de tu navegador Chrome para evitar incompatibilidades.

¿Cómo integrar el soporte de Selenium y Chrome Headless?

Para que tu suite de pruebas funcione con comportamientos dinámicos, debes configurar Selenium y Chrome Headless adecuadamente:

  • Instalación de Chrome Driver: Descarga e instala la versión adecuada de Chrome Driver desde chromedriver.chromium.org. Una vez descargado, descomprime el archivo y sigue estos pasos para que sea accesible en tu entorno:
    • Mueve chromedriver a un directorio en el PATH del usuario.
    • Verifica que el archivo es ejecutable por programas externos como Arspec y Capybara.

¿Cómo realizar pruebas de selectores dinámicos?

En pruebas donde se manipulan listas desplegables o selects que varían dinámicamente, se recomienda:

  1. Scope del Contenedor: Utiliza el método within de Capybara para enfocar interacciones dentro de un contenedor específico, como nested fields.

  2. Uso de XPath: Define la ruta exacta hacia tus elementos de interés con XPath cuando los valores son generados dinámicamente y no son predecibles.

within(:xpath, 'ruta_al_contenedor_nest_fields') do
  select 'Usuario', from: 'usuario'
  select 'Responsable', from: 'rol'
end
  1. Interacción con elementos: Una vez seleccionado el contenedor, puedes interactuar directamente con los selects y realizar clic en los botones necesarios usando Capybara's DSL.

¿Cómo verificar la creación de tareas dinámicas?

Finalmente, para verificar que los elementos importantes han sido creados o modificados de manera efectiva:

  • Utiliza métodos de reconocimiento de contenido para confirmar que las operaciones han sido exitosas.
expect(page).to have_content('Task was successfully created')

Realizar pruebas de sistema en aplicaciones dinámicas puede representar un reto significativo, pero con herramientas como Chrome Headless y Selenium, se facilita el manejo de automatizaciones de calidad en proyectos modernos de desarrollo web. Recuerda mantener tus herramientas actualizadas y bien configuradas para el éxito en tus tests. ¡Continúa aprendiendo y explorando para dominar nuevas tecnologías!

Aportes 2

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si alguno no quiere o no puede mover el archivo chromedriver a /usr/bin lo que puede hacer es dejarlo en descargas (o en el lugar que quieran), obtener la ruta y en el archivo de rails_helper especificar la ruta con

Selenium::WebDriver::Chrome::Service.driver_path = "ruta del chrome driver"

yo lo puse una línea antes de el config.after(:each, type: :system, js: true) do

Una forma de ver visualmente lo que se esta renderizando en la pagina en lugar del
binding.pry
es haciendo
save_page(CUALQUIER_NOMBRE.html)
esto generara un archivo llamado CUALQUIER_NOMBRE.html el cual se puede abrir en cualquier navegador web.