📍 Creando nuestro primer Feature y ejecutándolo

📍 Creando nuestro primer Feature y ejecutándolo

🧠 Qué te llevás de esta clase

  • Crear tu primer Feature File con Cucumber

  • Configurar el TestRunner

  • Conectar Gradle con la ejecución de Cucumber

  • Entender por qué esta primera ejecución puede fallar, y por qué eso está bien


📖 Explicación en palabras simples

Hasta ahora venimos preparando el proyecto.

Ahora vamos a crear nuestro primer escenario en Cucumber.

La idea es simple:

👉 escribir en Gherkin qué comportamiento queremos probar
👉 configurar una clase que sepa ejecutar ese feature
👉 correrlo por primera vez para validar que Cucumber está correctamente conectado

Y ojo con esto:

👉 es esperable que todavía no pase exitosamente

En esta etapa no estamos buscando tener el test completo funcionando.
Estamos buscando confirmar que Cucumber lee el feature, reconoce los steps y nos muestra qué falta implementar.

Eso también es progreso.


⚙️ Ajuste en settings.gradle

Primero dejamos el proyecto con el nombre correcto y sacamos la referencia a app:

rootProject.name = 'SeleniumFreeRange'

Esto ayuda a que Gradle entienda nuestro proyecto como una estructura simple, sin módulos extra que no estamos usando.


🏃‍♂️ Creamos el TestRunner.java

Dentro de la carpeta runner, creamos la clase TestRunner.java:

package runner;

import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;

@RunWith(Cucumber.class)
@CucumberOptions(
    features = "src/test/resources",
    glue = "src/test/java/steps",
    plugin = { "pretty", "html:target/cucumber-reports" }
)
public class TestRunner {}

Esta clase cumple un rol muy importante:

👉 le dice a Cucumber dónde están los .feature
👉 le dice dónde buscar los step definitions
👉 define cómo queremos ver los resultados de la ejecución


🥒 Creamos el primer Feature File

Dentro de src/test/resources/features, creamos:

FreeRangeNavigation.feature

Con este contenido:

Feature: Navigation bar
  To see the subpages
  Without logging in
  I can click the navigation bar links

  Scenario: I can access the subpages through the navigation bar
    Given I navigate to www.freerangetesters.com
    When I try to access the free sections through the navigation bar
    Then I am redirected to the right page

Este escenario todavía está en un nivel bastante general.

Y eso está bien.

Más adelante vamos a mejorar la implementación y conectar estos pasos con Selenium y nuestras Page Object Classes.

Por ahora, queremos que Cucumber pueda leerlo.


🦾 Ajuste en build.gradle

Al final del archivo build.gradle, cambiamos la tarea test:

tasks.named('test') {
    systemProperty "cucumber.options", System.getProperty("cucumber.options")
}

Esto permite pasar opciones de Cucumber cuando ejecutamos los tests desde Gradle.


⚠️ Por qué puede fallar esta primera ejecución

Cuando corras el test, es muy probable que Cucumber te diga algo como:

You can implement missing steps with the snippets below:

Eso no es un error grave.

En realidad, Cucumber te está diciendo:

👉 “Encontré el Feature File”
👉 “Leí el Scenario”
👉 “Pero todavía no sé qué código ejecutar para cada Given/When/Then”

Y eso es exactamente lo que esperamos en este punto.


🧠 Idea clave

Una ejecución fallida también puede ser una buena señal.

En este caso, si Cucumber detecta los pasos pendientes, significa que:

  • la estructura está bien

  • el runner está funcionando

  • el feature está siendo leído

  • la conexión inicial existe

Todavía no tenemos automatización completa, pero ya conectamos una parte fundamental del framework.


🧪 Mini ejercicio

Después de correrlo, mirá la consola y tratá de identificar:

  • ¿Cucumber encontró el feature?

  • ¿Reconoció el scenario?

  • ¿Te sugirió snippets para implementar los steps?

Si la respuesta es sí, venís perfecto.


➡️ Qué sigue

En la próxima clase vamos a empezar a conectar este feature con código real.

Ahí vamos a crear los Step Definitions y vamos a empezar a unir:

👉 Feature File
👉 Steps
👉 Page Object
👉 Selenium WebDriver

Acá les dejo las clases que creamos y modificamos y su código como referencia.

settings.gradle: Le sacamos que incluya "app" y dejamos solo

rootProject.name = 'SeleniumFreeRange'

TestRunner.java

package runner;

import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources", 
                 glue = "src/test/java/steps", 
                 plugin = { "pretty", "html:target/cucumber-reports" })

public class TestRunner {}

FreeRangeNavigation.feature

Feature: Navigation bar
 To see the subpages
 Without logging in
 I can click the navigation bar links

Scenario: I can access the subpages through the navigation bar 
  Given I navigate to www.freerangetesters.com 
  When I try to access the free sections through the navigation bar 
  Then I am redirected to the right page

Al final de build.gradle, cambiamos la tarea "test" de la siguiente manera.

tasks.named('test') { 
systemProperty "cucumber.options", System.getProperty("cucumber.options")}

Selenium y Cucumber con Java

Comprar ahoraSaber más

Introducción

  • 🧐 ¿Qué vamos a ver en este curso?
  • 🤔 ¿Cómo hacer preguntas?
  • 🔥 Recomendaciones para sacarle el mayor provecho al curso2
  • 💪🏻 Actividades del curso
  • 🧑🏻‍💻 ¿Qué es Selenium WebDriver?
  • 🥒 ¿Qué es Cucumber?
  • 🦾 ¿Qué es Gradle?
  • 🔥 Cuestionario Módulo 1
  • 📍 Actividad módulo 1

Instalaciones para el curso

  • 💻 Instalaciones de JDK, Gradle y extensiones6
  • ⚒️ Creando un proyecto con Java y Gradle para Testing9
  • ☕️ Instalando las primeras librerías de nuestro framework

Configuración del proyecto

  • 📚 Creación de carpetas y una decisión clave sobre la infraestructura de nuestro proyecto4
  • 🤠 Una librería que simplifica todo y nuestro primer test12
  • 🥗 Otra extensión útil de Cucumber2
  • Actividad: Compartiendo tu Setup Inicial y WebDriver Manager

Page Object Model: Teoría e implementación

  • 🧙🏻‍♂️ Page Object Model: ¿Qué es y por qué usarlo?5
  • 🔥 La otra gran decisión de diseño de nuestro Framework: Screenplay vs POM
  • 🔍 Cuestionario Módulo POM
  • ✋🏻 Actividad: Implementando el Page Object Model (POM)

Introducción a Cucumber: Instalación e implementación

  • 📍 Creando nuestro primer Feature y ejecutándolo1
  • 🧉 BasePage: Creando la configuración e instanciación del WebDriver
  • 🔌 Conectando Feature, Step Def y Page Object Class5
  • 🔍 Cuestionario módulo Cucumber
  • 🥒 Actividad: Instalación e Implementación de Cucumber

Localización de Elementos Web con XPath y CSS

  • 👨🏻‍🎓 Locators y consejos
  • 📝 Cheatsheet para construir buenos locators con XPath y CSS
  • 🧑🏻‍💻 Actividad: Dominando Locators con XPath y CSS

Selenium WebDriver: La librería para interactuar con elementos de una página web.

  • 🏃🏽‍♂️‍➡️ La BasePage: La columna vertebral de nuestro framework.
  • 🧹 Limpiando el browser después de ejecutar pruebas
  • 💬 Llenando campos de texto: La función sendKeys() de Selenium
  • 🧠 Dropdowns con Selenium: El objeto Select
  • 👩🏻‍💻 Navegando a todos los links con un solo locator3
  • 🪲 Creando un nuevo scenario y Page Object Classes2
  • 🦀 Scenario 2 El usuario puede elegir un plan al suscribirse
  • 🤖 Cuestionario módulo Selenium
  • ☕️ Actividad: Interactuando con Elementos Usando Selenium WebDriver

Assertions: Validando comportamiento esperado

  • ✓ Nuestra primera validación: Todos los elementos de un dropdown2
  • 🔍 Tipos de Assertions con TestNG
  • 🤖 Las Soft Assertions: Una parte muy conveniente de la librería TestNG
  • 🦸🏻‍♂️ Cuestionario módulo Assertions
  • 👾 Actividad: Validación de Comportamiento Usando Assertions

Cucumber avanzado: Tags, parámetros y mejores prácticas

  • 😱 Tags en Cucumber3
  • 🧛🏻‍♀️ Backgrounds en Cucumber
  • 😇 Expresiones para mejorar nuestros Feature Files
  • ✋🏻 Expresiones regulares parte 2
  • 💪🏻 Actividad: Organizando Escenarios con Tags en Cucumber

Generación de Reportes con Cucumber

  • 🧑🏼‍🔬 Reportes en Cucumber4
  • 📸 Como agregar screenshots de la falla a nuestro reporte
  • 💻 Cuestionario para el módulo de Cucumber avanzado
  • 🤩 Actividad: Generación de Reportes con Cucumber

Ejercicios aplicando lo aprendido

  • 🦸🏻‍♂️ Entrevista Automation: ¿Cómo resolvemos un ejercicio REAL de Selenium Webdriver?1
  • 🧞 Exámen técnico de Automation con Selenium, Java y Cucumber resuelto y explicado.3
  • Actividad Final: Reflexiona y Comparte Tu Aprendizaje en Testing Automatizado

Dejá tu testimonio inmortalizado en la web

  • 🙏🏻 Testimonio