Frameworks
WebdriverIO Runner tiene soporte integrado para Mocha, Jasmine, y Cucumber.js. También puedes integrarlo con frameworks de código abierto de terceros, como Serenity/JS.
Para integrar WebdriverIO con un framework de prueba, necesitas un paquete adaptador disponible en NPM. Ten en cuenta que el paquete adaptador debe instalarse en la misma ubicación donde está instalado WebdriverIO. Así que, si instalaste WebdriverIO globalmente, asegúrate de instalar el paquete adaptador globalmente también.
Integrar WebdriverIO con un framework de prueba te permite acceder a la instancia de WebDriver usando la variable global browser
en tus archivos de especificación o definiciones de pasos.
Ten en cuenta que WebdriverIO también se encargará de instanciar y finalizar la sesión de Selenium, por lo que no tienes que hacerlo
tú mismo.
Usando Mocha
Primero, instala el paquete adaptador desde NPM:
- npm
- Yarn
- pnpm
npm install @wdio/mocha-framework --save-dev
yarn add @wdio/mocha-framework --dev
pnpm add @wdio/mocha-framework --save-dev
Por defecto, WebdriverIO proporciona una biblioteca de aserciones integrada con la que puedes comenzar de inmediato:
describe('mi increíble sitio web', () => {
it('debería hacer algunas aserciones', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
WebdriverIO soporta las interfaces BDD
(por defecto), TDD
y QUnit
de Mocha interfaces.
Si te gusta escribir tus especificaciones en estilo TDD, establece la propiedad ui
en tu configuración mochaOpts
a tdd
. Ahora tus archivos de prueba deberían escribirse así:
suite('mi increíble sitio web', () => {
test('debería hacer algunas aserciones', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
Si quieres definir otras configuraciones específicas de Mocha, puedes hacerlo con la clave mochaOpts
en tu archivo de configuración. Una lista de todas las opciones se puede encontrar en el sitio web del proyecto Mocha.
Nota: WebdriverIO no admite el uso obsoleto de callbacks done
en Mocha:
it('debería probar algo', (done) => {
done() // lanza "done is not a function"
})
Opciones de Mocha
Las siguientes opciones se pueden aplicar en tu wdio.conf.js
para configurar tu entorno Mocha. Nota: no todas las opciones son compatibles, por ejemplo, aplicar la opción parallel
causará un error ya que el ejecutor de pruebas WDIO tiene su propia forma de ejecutar pruebas en paralelo. Puedes pasar estas opciones de framework como argumentos, por ejemplo:
wdio run wdio.conf.ts --mochaOpts.grep "mi prueba" --mochaOpts.bail --no-mochaOpts.checkLeaks
Esto pasará las siguientes opciones de Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Se admiten las siguientes opciones de Mocha:
require
La opción require
es útil cuando deseas agregar o extender alguna funcionalidad básica (opción de framework WebdriverIO).
Type: string|string[]
Default: []
compilers
Usa el/los módulo(s) dado(s) para compilar archivos. Los compiladores se incluirán antes de los requisitos (opción de framework WebdriverIO).
Type: string[]
Default: []
allowUncaught
Propaga errores no capturados.
Type: boolean
Default: false
bail
Aborta después del primer fallo de prueba.
Type: boolean
Default: false
checkLeaks
Comprueba si hay fugas de variables globales.
Type: boolean
Default: false
delay
Retrasa la ejecución de la suite raíz.
Type: boolean
Default: false
fgrep
Filtro de prueba dada la cadena.
Type: string
Default: null
forbidOnly
Las pruebas marcadas con only
fallan en la suite.
Type: boolean
Default: false
forbidPending
Las pruebas pendientes fallan en la suite.
Type: boolean
Default: false
fullTrace
Traza completa de la pila en caso de fallo.
Type: boolean
Default: false
global
Variables esperadas en el ámbito global.
Type: string[]
Default: []
grep
Filtro de prueba dada la expresión regular.
Type: RegExp|string
Default: null
invert
Invierte las coincidencias del filtro de prueba.
Type: boolean
Default: false
retries
Número de veces para reintentar pruebas fallidas.
Type: number
Default: 0
timeout
Valor umbral de tiempo de espera (en ms).
Type: number
Default: 30000
Usando Jasmine
Primero, instala el paquete adaptador desde NPM:
- npm
- Yarn
- pnpm
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-dev
Luego puedes configurar tu entorno Jasmine estableciendo una propiedad jasmineOpts
en tu configuración. Una lista de todas las opciones se puede encontrar en el sitio web del proyecto Jasmine.
Opciones de Jasmine
Las siguientes opciones se pueden aplicar en tu wdio.conf.js
para configurar tu entorno Jasmine usando la propiedad jasmineOpts
. Para más información sobre estas opciones de configuración, consulta la documentación de Jasmine. Puedes pasar estas opciones de framework como argumentos, por ejemplo:
wdio run wdio.conf.ts --jasmineOpts.grep "mi prueba" --jasmineOpts.failSpecWithNoExpectations --no-jasmineOpts.random
Esto pasará las siguientes opciones de Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Se admiten las siguientes opciones de Jasmine:
defaultTimeoutInterval
Intervalo de tiempo de espera predeterminado para operaciones de Jasmine.
Type: number
Default: 60000
helpers
Array de rutas de archivo (y globs) relativas a spec_dir para incluir antes de las especificaciones de jasmine.
Type: string[]
Default: []
requires
La opción requires
es útil cuando deseas agregar o extender alguna funcionalidad básica.
Type: string[]
Default: []
random
Si se debe aleatorizar el orden de ejecución de las especificaciones.
Type: boolean
Default: true
seed
Semilla para usar como base de aleatorización. Null hace que la semilla se determine aleatoriamente al inicio de la ejecución.
Type: Function
Default: null
failSpecWithNoExpectations
Si se debe fallar la especificación si no ejecutó expectativas. Por defecto, una especificación que no ejecutó expectativas se reporta como aprobada. Establecer esto en true reportará dicha especificación como un fallo.
Type: boolean
Default: false
oneFailurePerSpec
Si se debe hacer que las especificaciones solo tengan un fallo de expectativa.
Type: boolean
Default: false
specFilter
Función a usar para filtrar especificaciones.
Type: Function
Default: (spec) => true
grep
Solo ejecuta pruebas que coincidan con esta cadena o expresión regular. (Solo aplicable si no se establece una función personalizada specFilter
)
Type: string|Regexp
Default: null
invertGrep
Si es verdadero, invierte las pruebas coincidentes y solo ejecuta pruebas que no coincidan con la expresión utilizada en grep
. (Solo aplicable si no se establece una función personalizada specFilter
)
Type: boolean
Default: false
Usando Cucumber
Primero, instala el paquete adaptador desde NPM:
- npm
- Yarn
- pnpm
npm install @wdio/cucumber-framework --save-dev
yarn add @wdio/cucumber-framework --dev
pnpm add @wdio/cucumber-framework --save-dev
Si quieres usar Cucumber, establece la propiedad framework
a cucumber
agregando framework: 'cucumber'
al archivo de configuración.
Las opciones para Cucumber se pueden dar en el archivo de configuración con cucumberOpts
. Consulta la lista completa de opciones aquí.
Para comenzar rápidamente con Cucumber, echa un vistazo a nuestro proyecto cucumber-boilerplate
que viene con todas las definiciones de pasos que necesitas para comenzar, y estarás escribiendo archivos de características de inmediato.
Opciones de Cucumber
Las siguientes opciones se pueden aplicar en tu wdio.conf.js
para configurar tu entorno Cucumber usando la propiedad cucumberOpts
:
Las cucumberOpts
, como etiquetas personalizadas para filtrar pruebas, se pueden especificar a través de la línea de comandos. Esto se logra utilizando el formato cucumberOpts.{nombreOpción}="valor"
.
Por ejemplo, si solo quieres ejecutar las pruebas que están etiquetadas con @smoke
, puedes usar el siguiente comando:
# Cuando solo quieres ejecutar pruebas que tienen la etiqueta "@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.tags="@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.name="nombre de algún escenario" --cucumberOpts.failFast
Este comando establece la opción tags
en cucumberOpts
a @smoke
, asegurando que solo se ejecuten las pruebas con esta etiqueta.
backtrace
Muestra el backtrace completo para errores.
Type: Boolean
Default: true
requireModule
Requiere módulos antes de requerir cualquier archivo de soporte.
Type: string[]
Default: []
Example:
cucumberOpts: {
requireModule: ['@babel/register']
// o
requireModule: [
[
'@babel/register',
{
rootMode: 'upward',
ignore: ['node_modules']
}
]
]
}
failFast
Aborta la ejecución en el primer fallo.
Type: boolean
Default: false
name
Solo ejecuta los escenarios con nombre que coincida con la expresión (repetible).
Type: RegExp[]
Default: []
require
Requiere archivos que contengan tus definiciones de pasos antes de ejecutar características. También puedes especificar un glob para tus definiciones de pasos.
Type: string[]
Default: []
Example:
cucumberOpts: {
require: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
import
Rutas a donde está tu código de soporte, para ESM.
Type: String[]
Default: []
Example:
cucumberOpts: {
import: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
strict
Falla si hay pasos indefinidos o pendientes.
Type: boolean
Default: false
tags
Solo ejecuta las características o escenarios con etiquetas que coincidan con la expresión. Consulta la documentación de Cucumber para más detalles.
Type: String
Default: ``
timeout
Tiempo de espera en milisegundos para definiciones de pasos.
Type: Number
Default: 30000
retry
Especifica el número de veces para reintentar casos de prueba fallidos.
Type: Number
Default: 0
retryTagFilter
Solo reintenta las características o escenarios con etiquetas que coincidan con la expresión (repetible). Esta opción requiere que se especifique '--retry'.
Type: RegExp
language
Idioma predeterminado para tus archivos de características
Type: String
Default: en
order
Ejecuta pruebas en orden definido / aleatorio
Type: String
Default: defined
format
Nombre y ruta de archivo de salida del formateador a usar. WebdriverIO principalmente admite solo los Formateadores que escriben salida a un archivo.
Type: string[]
formatOptions
Opciones para proporcionar a los formateadores
Type: object
tagsInTitle
Agrega etiquetas de cucumber al nombre de la característica o escenario
Type: Boolean
Default: false
Ten en cuenta que esta es una opción específica de @wdio/cucumber-framework y no reconocida por cucumber-js
ignoreUndefinedDefinitions
Trata las definiciones indefinidas como advertencias.
Type: Boolean
Default: false
Ten en cuenta que esta es una opción específica de @wdio/cucumber-framework y no reconocida por cucumber-js
failAmbiguousDefinitions
Trata las definiciones ambiguas como errores.
Type: Boolean
Default: false
Ten en cuenta que esta es una opción específica de @wdio/cucumber-framework y no reconocida por cucumber-js
tagExpression
Solo ejecuta las características o escenarios con etiquetas que coincidan con la expresión. Consulta la documentación de Cucumber para más detalles.
Type: String
Default: ``
***Ten en cuenta que