Empezando con Allure Cucumber.rb
Genera informes HTML hermosos utilizando Allure Report y tus pruebas de Cucumber.rb.
INFO
Consulta el proyecto de ejemplo en github.com/allure-examples/allure-cucumber-example para ver Allure Cucumber.rb en acción.
Configuración
1. Prepara tu proyecto
Instala la herramienta de línea de comandos Allure Report, si aún no está instalada en tu sistema operativo. Ten en cuenta que Allure Report requiere Java, consulta las instrucciones de instalación.
Agrega Allure Cucumber.rb al
Gemfile
de tu proyecto. Por ejemplo:rubysource 'https://rubygems.org' gem 'allure-cucumber', '~> 2.23.0' gem 'cucumber', '~> 9.1'
Abre una terminal, ve al directorio del proyecto e instala las dependencias desde el
Gemfile
. Por ejemplo, si usas Bundler:bashcd /home/user/myproject bundle install
En el archivo
cucumber.yml
del proyecto, especifica el formateador de Allure para Cucumber.rb.yamldefault: --format AllureCucumber::CucumberFormatter
2. Ejecuta las pruebas
Ejecuta tus pruebas de Cucumber.rb de la misma manera que normalmente las ejecutarías. Por ejemplo:
bundle exec cucumber
Esto guardará los datos necesarios en allure-results
u otro directorio, según la Configuración. Si el directorio ya existe, los nuevos archivos se agregarán a los existentes, de modo que un informe futuro se basará en todos ellos.
3. Genera un informe
Finalmente, ejecuta Allure para convertir los resultados de las pruebas en un informe HTML. Esto abrirá automáticamente tu navegador para ver el informe.
allure serve allure-results
Si es necesario, reemplaza allure-results
con la ruta al directorio especificado en la Configuración.
Existen algunas opciones que pueden afectar la forma en que se genera el informe. Ejecuta allure --help
para ver la lista completa de opciones.
Escribiendo pruebas
El adaptador de Allure Cucumber.rb extiende las características estándar de informes de Cucumber.rb proporcionando capacidades adicionales para crear pruebas más informativas y estructuradas. Esta sección resalta las mejoras clave que se pueden utilizar:
- Anotación de Metadatos: Mejora los informes de pruebas con descripciones, enlaces y otros metadatos.
- Organización de Pruebas: Estructura tus pruebas en jerarquías claras para mejorar la legibilidad y organización organiza las pruebas.
- División de Pasos: Divide las pruebas en pasos de prueba más pequeños para facilitar su comprensión y mantenimiento.
- Pruebas Parametrizadas: Describe claramente los parámetros para las pruebas parametrizadas para especificar diferentes escenarios.
- Adjuntos: Captura automáticamente capturas de pantalla y otros archivos durante la ejecución de las pruebas.
- Selección de Pruebas: Utiliza un archivo de plan de pruebas para seleccionar qué pruebas ejecutar, lo que permite una ejecución de pruebas flexible.
- Detalles del Entorno: Incluye información completa del entorno para acompañar el informe de la prueba.
Agregando metadatos
Allure te permite enriquecer tus informes con una variedad de metadatos. Esta información adicional proporciona contexto y detalles para cada prueba, mejorando la utilidad del informe. Consulta la sección de referencia de metadatos para obtener una lista exhaustiva de lo que se puede agregar.
require 'allure-cucumber'
When 'I open labels page' do
Allure.description_html 'This test attempts to log into the website using a login and a password.'
Allure.label 'owner', 'John Doe'
# ...
end
Organizar pruebas
Como se describe en Mejorando la navegación en tu informe de prueba, Allure admite múltiples formas de organizar las pruebas en estructuras jerárquicas.
Para especificar la ubicación de una prueba en la jerarquía basada en el comportamiento:
require 'allure-cucumber'
When 'I open labels page' do
Allure.epic 'Web interface'
Allure.feature 'Essential features'
Allure.story 'Authentication'
# ...
end
Feature: Labels
@EPIC:WebInterface
@FEATURE:EssentialFeatures
@STORY:Authentication
Scenario: Create new label for authorized user
When I open labels page
And I create label with title "hello"
Then I should see label with title "hello"
Para especificar la ubicación de una prueba en la jerarquía basada en suites:
require 'allure-cucumber'
When 'I open labels page' do
Allure.label 'parentSuite' 'Web interface'
Allure.suite 'Essential features'
Allure.label 'subSuite', 'Authentication'
# ...
end
Divide una prueba en pasos
Allure Cucumber.rb proporciona tres formas de crear pasos y sub-pasos: "pasos anotados", "pasos basados en bloques" y "pasos sin operación" (no-op), consulta la referencia.
require 'allure-cucumber'
When 'I open labels page' do
Steps.step_1
Steps.step_2
end
class Steps
extend AllureStepAnnotation
step 'Step 1'
def self.step_1
step_1_1
step_1_2
end
step 'Step 1.1'
def self.step_1_1
# ...
end
step 'Step 1.2'
def self.step_1_2
# ...
end
step 'Step 2'
def self.step_2
step_2_1
step_2_2
end
step 'Step 2.1'
def self.step_2_1
# ...
end
step 'Step 2.2'
def self.step_2_2
# ...
end
end
require 'allure-cucumber'
When 'I open labels page' do
Allure.run_step 'Step 1' do
# ...
Allure.step name: 'Step 1.1', status: :passed
# ...
Allure.step name: 'Step 1.2', status: :passed
end
Allure.run_step 'Step 2' do
# ...
Allure.step name: 'Step 2.1', status: :passed
# ...
Allure.step name: 'Step 2.2', status: :passed
end
end
Describe pruebas parametrizadas
Un informe de prueba Allure puede reflejar dos formas en las que puedes pasar datos desde tu archivo Gherkin a tu código de implementación en Ruby, a saber:
El siguiente ejemplo muestra un archivo Gherkin y un archivo de implementación en Ruby de una prueba. En este ejemplo, los cuatro parámetros para el paso “Ingreso mis detalles...” se mostrarán en ambas instancias del escenario en el informe de la prueba.
Feature: User management
Scenario Outline: Registration
When I go to the registration form
And I enter my details: <login>, <password>, <name>, <birthday>
Then the profile should be created
Examples:
| login | password | name | birthday |
| johndoe | qwerty | John Doe | 1970-01-01 |
| janedoe | 123456 | Jane Doe | 1111-11-11 |
require 'allure-cucumber'
When 'I go to the registration form' do
# ...
end
And /^I enter my details: (.*), (.*), (.*), (.*)$/ do |login, password, name, birthday|
# ...
end
Then 'the profile should be created' do
# ...
end
Adjuntar capturas de pantalla y otros archivos
En los informes de Allure, tienes la capacidad de adjuntar varios tipos de archivos, lo que puede mejorar considerablemente la comprensión del informe. Una práctica común es adjuntar capturas de pantalla que capturan el estado de la interfaz de usuario en momentos específicos durante la ejecución de la prueba.
Para obtener instrucciones detalladas sobre cómo implementar adjuntos, consulta la sección de adjuntos en la referencia de Allure Cucumber.rb.
require 'allure-cucumber'
When 'I open labels page' do
Allure.add_attachment name: 'Screenshot',
source: File.new('/path/to/image.png'),
type: Allure::ContentType::PNG
Allure.add_attachment name: 'Data',
source: 'This is the file content.',
type: Allure::ContentType::TXT
# ...
end
Seleccionar pruebas a través de un archivo de plan de pruebas
Si la variable de entorno ALLURE_TESTPLAN_PATH
está definida y apunta a un archivo existente, Cucumber.rb solo ejecutará las pruebas listadas en este archivo.
Aquí tienes un ejemplo de cómo ejecutar las pruebas de acuerdo con un archivo llamado testplan.json
:
export ALLURE_TESTPLAN_PATH=testplan.json
bundle exec cucumber
setx ALLURE_TESTPLAN_PATH "testplan.json"
bundle exec cucumber
Información del entorno
Para la página principal del informe, puedes recopilar diversa información sobre el entorno en el que se ejecutaron las pruebas. Para hacerlo, especifica la información en el parámetro de configuración environment_properties
.
Por ejemplo, es una buena idea usar esto para recordar la versión del sistema operativo y la versión de Ruby. Esto puede ayudar al lector futuro a investigar errores que solo sean reproducibles en algunos entornos.
require 'allure-cucumber'
AllureCucumber.configure do |config|
config.environment_properties = {
os_platform: RbConfig::CONFIG['host_os'],
ruby_version: RUBY_VERSION,
}
end
Ten en cuenta que si tu lanzamiento incluye múltiples ejecuciones de Cucumber.rb (consulta Cómo funciona), Allure Cucumber.rb solo guardará la información del entorno de la última ejecución.