PHP con Docker. Cypress

Aunque algunos frameworks como Laravel tienen sus librerías de test end to end más o menos integradas, en este caso sería el Laravel Dusk, tal vez por diversos motivos queramos usar cypress para nuestros tests de aceptación.

En este post explicaré una configuración sencilla para hacer test cypress con docker.

Añadiendo servicio e2e cypress a docker-compose.yml

Para hacer la prueba he usado el framework ligero de PHP que publique en GitHub.

Simplemente tendremos que añadir la carpeta e2e del anterior repositorio y añadir el servicio a vuestro docker-compose.yml:

    e2e:
      image: cypress
      links:
        - app:lpf.local
      depends_on:
        - app
      environment:
        - CYPRESS_baseUrl=http://lpf.local:8080
        - DISPLAY=unix${DISPLAY}
      command: tail -f /dev/null
      volumes:
        - ./e2e/cypress:/app/cypress
        - ./e2e/cypress.json:/app/cypress.json
        - /dev/shm:/dev/shm
        - /tmp/.X11-unix:/tmp/.X11-unix

Como véis, en el servicio usamos la imagen de cypress:

  • Añadimos el link a la app para que desde el contendor de cypress se pueda acceder al servicio donde corre la misma.
  • En el entorno le pasamos la URL a partir de la cual tendrá que ejecutar los tests.
  • Compartimos la carpeta cypress para meter los tests en el contenedor y la configuración del fichero cypress.json.
  • Por último, añadimos un volumen y variable de entorno, para que los tests se puedan ejecutar en nuestra pantalla (.X11-unix, DISPLAY) y el volumen /dev/shm para no tener problemas de memoría.

Ejecutando los tests.

Para ejecutar los tests sin tener que entrar en el contenedor ejecutad los siguientes comandos:

DISPLAY=:0 # Aquí tienes que poner tu display, suele ser :0, pero puedes averiguarlo con el comando who.
export DISPLAY
xhost +

Ya por último si queremos ejecutar los tests en consola:

docker-compose exec e2e npx cypress run

Si preferimos abrir la consola de cypress para ejecutar los tests:

docker-compose exec e2e npx cypress open
Load more

Raül Torralba Adsuara

Software developer, organizer at @betabeersCAS, vim lover and artansoft's blogger.

rtorralba raul_torralba


Published