Depuración
La depuración es significativamente más difícil cuando varios procesos generan docenas de pruebas en múltiples navegadores.
Para empezar, es extremadamente útil limitar el paralelismo estableciendo maxInstances
a 1
, y apuntando solo a aquellas especificaciones y navegadores que necesitan ser depurados.
En wdio.conf
:
export const config = {
// ...
maxInstances: 1,
specs: [
'**/myspec.spec.js'
],
capabilities: [{
browserName: 'firefox'
}],
// ...
}
El Comando Debug
En muchos casos, puedes usar browser.debug()
para pausar tu prueba e inspeccionar el navegador.
Tu interfaz de línea de comandos también cambiará al modo REPL. Este modo te permite experimentar con comandos y elementos en la página. En el modo REPL, puedes acceder al objeto browser
—o a las funciones $
y $$
—como lo haces en tus pruebas.
Cuando uses browser.debug()
, probablemente necesitarás aumentar el tiempo de espera del ejecutor de pruebas para evitar que el ejecutor falle la prueba por tardar demasiado. Por ejemplo:
En wdio.conf
:
jasmineOpts: {
defaultTimeoutInterval: (24 * 60 * 60 * 1000)
}
Consulta timeouts para obtener más información sobre cómo hacer esto usando otros frameworks.
Para continuar con las pruebas después de la depuración, en la terminal usa el atajo ^C
o el comando .exit
.
Configuración dinámica
Ten en cuenta que wdio.conf.js
puede contener Javascript. Como probablemente no quieras cambiar permanentemente tu valor de tiempo de espera a 1 día, a menudo puede ser útil cambiar estas configuraciones desde la línea de comandos usando una variable de entorno.
Usando esta técnica, puedes cambiar dinámicamente la configuración:
const debug = process.env.DEBUG
const defaultCapabilities = ...
const defaultTimeoutInterval = ...
const defaultSpecs = ...
export const config = {
// ...
maxInstances: debug ? 1 : 100,
capabilities: debug ? [{ browserName: 'chrome' }] : defaultCapabilities,
execArgv: debug ? ['--inspect'] : [],
jasmineOpts: {
defaultTimeoutInterval: debug ? (24 * 60 * 60 * 1000) : defaultTimeoutInterval
}
// ...
}
Luego puedes prefijar el comando wdio
con la bandera debug
:
$ DEBUG=true npx wdio wdio.conf.js --spec ./tests/e2e/myspec.test.js
...¡y depurar tu archivo de especificación con DevTools!