Crea Dockerfile que incluye controlleres de Firefox y Chrome para el Selenio

Tengo el siguiente Dockerfile que buildá un server de Selenium

FROM selenium/standalone-firefox:3.4.0-chromium FROM selenium/standalone-chrome USER root ENV NODE_ENV test RUN mkdir -p /usr/local/cdt-tests/csv-data COPY ./csv-data /usr/local/cdt-tests/csv-data USER seluser 

obviamente, las dos declaraciones FROM son incorrectas => ¿Cómo puedo crear un contenedor de server Selenium que tenga tanto un controller Chrome como Firefox para Selenium? Por lo que puedo decir, la image de selenium/standalone-firefox:3.4.0-chromium solo funciona para Firefox.

No hay configuration de tipo de inheritance para los files Docker como usted sugiere.

Para implementar una compilation combinada necesitarás encontrar el antecesor FROM común de standalone-firefox y standalone-chrome , que es selenium/node-base y crear tu propio file Docker para volver a aplicar todos los pasos de compilation que se aplica a selenium/standalone-chrome . Luego manténgala sincronizada cada vez que Selenium actualice sus comstackciones.

Jerarquía de Dockerfile:

  selenium/node-base / \ selenium/node-chrome selenium/node-firefox | | selenium/standalone-chrome selenium/standalone-firefox 

El problema es que estas comstackciones se diseñaron para ser independientes, por lo que existe una superposition significativa en las variables y configuraciones que utilizan las imágenes que también necesitarías eliminar en tu compilation personalizada para controlar y ejecutar tanto Chrome como Firefox al mismo time. Probablemente termines teniendo que hacer todo desde cero.

Rejilla de selenium

Ejecutar los nodos de la networking Selenium individuales detrás de un concentrador de networking es la forma estándar de realizar testings de múltiples exploradores desde un solo punto final. Puede ejecutar los nodos Firefox , Chrome o Phantom JS en Docker o conectar nodos estándar desde cualquier otro lugar.

Pobre hombre rejilla

Siempre puedes ejecutar un contenedor para Chrome y Firefox en puertos separados y apuntar al mismo banco de testings en un puerto diferente si configurar una Grilla es mucho trabajo para el simple caso de ejecutar algunas testings contra cada browser.

No puede fusionar dos files docker que le gusten. Puede usar una como base para su file acoplable, y luego copyr las partes importantes de la otra en la suya.

Sin embargo, no deberías necesitarlo realmente. Hay imágenes por ahí con múltiples browseres y controlleres incluidos . O mejor, podría configurar una cuadrícula con la image del concentrador y algunas imágenes del controller .

Incluso podría considerar una biblioteca como Serenity o un producto como Katalon , que lo hacen todo por usted. Incluso hay una image de docker de Katalon diseñada para su uso en CI: solo tiene command-line + headless, pero eso es todo lo que necesita para la mayoría de las testings de regresión basadas en CI.