Servicio Docker
wdio-docker-service es un paquete de terceros, para más información consulta GitHub | npm
Este servicio está destinado a usarse con WebdriverIO y ayuda a ejecutar pruebas funcionales/de integración contra/usando aplicaciones en contenedores. Utiliza el popular servicio Docker (instalado por separado) para ejecutar contenedores.
¿Por qué usarlo?
Idealmente, tus pruebas se ejecutarían en alguna variedad de pipeline CI/CD donde a menudo no hay navegadores "reales" y otros recursos de los que depende tu aplicación. Con la llegada de Docker, prácticamente todas las dependencias necesarias de la aplicación pueden ser containerizadas. Con este servicio puedes ejecutar el contenedor de tu aplicación o un docker-selenium en tu CI y en completo aislamiento (asumiendo que CI puede tener Docker instalado como dependencia). Lo mismo puede aplicarse al desarrollo local si tu aplicación necesita tener un nivel de aislamiento de tu sistema operativo principal.
Cómo funciona
El servicio ejecutará una imagen docker existente y una vez que esté lista, iniciará las pruebas de WebdriverIO que deberían ejecutarse contra tu aplicación en contenedor.
Instalación
Ejecuta:
npm install wdio-docker-service --save-dev
Las instrucciones sobre cómo instalar WebdriverIO se pueden encontrar aquí.
Configuración
Por defecto, Google Chrome, Firefox y PhantomJS están disponibles cuando se instalan en el sistema host.
Para usar el servicio, necesitas agregar docker
a tu array de servicios:
// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};
Opciones
dockerOptions
Varias opciones necesarias para ejecutar el contenedor docker
Tipo: Object
Predeterminado: { options: { rm: true } }
Ejemplo:
dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}
dockerOptions.image
Etiqueta de nombre del contenedor Docker. Puede ser local o de Docker HUB.
Tipo: String
Requerido: true
dockerOptions.healthCheck
Configuración que verifica la disponibilidad de tus contenedores antes de iniciar las pruebas. Normalmente, esta sería una url de localhost. Si healthCheck no está configurado, Webdriver comenzará a ejecutar pruebas inmediatamente después de que inicie el contenedor Docker, lo que puede ser demasiado pronto considerando que el servicio web tarda en iniciarse dentro del contenedor Docker.
Tipo: String|Object
Opciones para uso de Object:
- url - url a una aplicación que se ejecuta dentro de tu contenedor
- maxRetries - número de reintentos hasta que falle el healthcheck. Predeterminado: 10
- inspectInterval - intervalo entre cada reintento en ms. Predeterminado: 500
- startDelay - retraso inicial para comenzar el healthcheck en ms. Predeterminado: 0
Ejemplo 1 (String): healthCheck: 'http://localhost:4444'
Ejemplo 2 (Object):
healthCheck: {
url: 'http://localhost:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}
dockerOptions.options
Mapa de opciones utilizadas por el comando docker run
. Para más detalles sobre el comando run
haz clic aquí.
Cualquier opción de una sola letra se convertirá a -[option]
(por ejemplo, d: true
-> -d
).
Cualquier opción de dos caracteres o más se
convertirá a --[option]
(por ejemplo, rm: true
-> --rm
).
Para opciones que pueden usarse más de una vez
(por ejemplo, -e
,-add-host
, --expose
, etc.), usa la notación de array (por ejemplo, e: ["NODE_ENV=development", "FOO=bar"]
).
Tipo: Object
Ejemplo:
options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}
dockerOptions.args
Cualquier argumento que quieras pasar al contenedor. Corresponde a [ARG...]
en Docker run CLI.
Tipo: String
dockerOptions.command
Cualquier comando que quieras pasar al contenedor. Corresponde a [COMMAND]
en Docker run CLI.
Tipo: String
onDockerReady
Un método de callback que se llama cuando la aplicación Docker está lista. La disponibilidad se determina por la capacidad de hacer ping a la url de healthCheck
.
Tipo: Function
dockerLogs
Ruta donde se deben almacenar los logs del contenedor docker
Tipo: String
Casos de uso de pruebas / Recetas
Por favor, visita nuestra Wiki para más detalles.