diff --git a/Base/Dockerfile b/Base/Dockerfile index a6a04013ed..c4703d957c 100644 --- a/Base/Dockerfile +++ b/Base/Dockerfile @@ -27,7 +27,9 @@ RUN apt-get update -qqy \ # Selenium #========== RUN mkdir -p /opt/selenium \ - && wget --no-verbose https://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar -O /opt/selenium/selenium-server-standalone.jar + && wget --no-verbose https://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar -O /opt/selenium/selenium-server-standalone-2.53.1.jar \ + && wget --no-verbose https://selenium-release.storage.googleapis.com/3.0-beta4/selenium-server-standalone-3.0.0-beta4.jar -O /opt/selenium/selenium-server-standalone-3.0.0-beta4.jar +ENV SELENIUM_VERSION=2.53.1 #======================================== # Add normal user with passwordless sudo diff --git a/Hub/entry_point.sh b/Hub/entry_point.sh index 4c8472ce64..cb1e551767 100755 --- a/Hub/entry_point.sh +++ b/Hub/entry_point.sh @@ -19,7 +19,7 @@ function shutdown { echo "shutdown complete" } -java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ +java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ -role hub \ -hubConfig $CONF \ ${SE_OPTS} & diff --git a/NodeBase/entry_point.sh b/NodeBase/entry_point.sh index 4d8a4244a0..4d3fd3bc2f 100644 --- a/NodeBase/entry_point.sh +++ b/NodeBase/entry_point.sh @@ -25,6 +25,10 @@ if [ ! -z "$REMOTE_HOST" ]; then REMOTE_HOST_PARAM="-remoteHost $REMOTE_HOST" fi +if [ ! -z "$FIREFOX_VERSION" ]; then + sudo ln -fs /opt/firefox/${FIREFOX_VERSION}/firefox /usr/bin/firefox +fi + if [ ! -z "$SE_OPTS" ]; then echo "appending selenium options: ${SE_OPTS}" fi @@ -33,7 +37,7 @@ fi SERVERNUM=$(get_server_num) xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \ - java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ + java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ -role node \ -hub http://$HUB_PORT_4444_TCP_ADDR:$HUB_PORT_4444_TCP_PORT/grid/register \ ${REMOTE_HOST_PARAM} \ diff --git a/NodeChromeDebug/entry_point.sh b/NodeChromeDebug/entry_point.sh index e83f0fb6ec..dbc9d04141 100644 --- a/NodeChromeDebug/entry_point.sh +++ b/NodeChromeDebug/entry_point.sh @@ -38,7 +38,7 @@ env | cut -f 1 -d "=" | sort > asroot $(for E in $(grep -vxFf asseluser asroot); do echo $E=$(eval echo \$$E); done) \ DISPLAY=$DISPLAY \ xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \ - java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ + java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ -role node \ -hub http://$HUB_PORT_4444_TCP_ADDR:$HUB_PORT_4444_TCP_PORT/grid/register \ ${REMOTE_HOST_PARAM} \ diff --git a/NodeFirefox/Dockerfile.txt b/NodeFirefox/Dockerfile.txt index 97c6665395..b6a486bf06 100644 --- a/NodeFirefox/Dockerfile.txt +++ b/NodeFirefox/Dockerfile.txt @@ -5,17 +5,31 @@ USER root #========= # Firefox #========= -ENV FIREFOX_VERSION 47.0.1 RUN apt-get update -qqy \ && apt-get -qqy --no-install-recommends install firefox \ && rm -rf /var/lib/apt/lists/* \ - && wget --no-verbose -O /tmp/firefox.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2 \ - && apt-get -y purge firefox \ - && rm -rf /opt/firefox \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && mv /opt/firefox /opt/firefox-$FIREFOX_VERSION \ - && ln -fs /opt/firefox-$FIREFOX_VERSION/firefox /usr/bin/firefox + && apt-get -y purge firefox +ENV FIREFOX_VERSION 47.0.1 +RUN for VERSION in 49.0.1 48.0.2 47.0.1 45.4.0esr 38.8.0esr; do \ + wget --no-verbose -O /tmp/firefox-$VERSION.tar.bz2 https://download-installer.cdn.mozilla.net/pub/firefox/releases/$VERSION/linux-x86_64/en-US/firefox-$VERSION.tar.bz2 \ + && mkdir -p /opt/firefox/$VERSION \ + && tar -C /opt/firefox/$VERSION --strip-components 1 -xjf /tmp/firefox-$VERSION.tar.bz2 \ + && rm /tmp/firefox-$VERSION.tar.bz2 \ + ;done +RUN ln -fs /opt/firefox/$FIREFOX_VERSION/firefox /usr/bin/firefox + +#============ +# GeckoDriver +#============ +ENV GECKODRIVER_VERSION 0.10.0 +RUN wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux64.tar.gz \ + && rm -rf /opt/geckodriver \ + && tar -C /opt -zxf /tmp/geckodriver.tar.gz \ + && rm /tmp/geckodriver.tar.gz \ + && mv /opt/geckodriver /opt/geckodriver-$GECKODRIVER_VERSION \ + && chmod 755 /opt/geckodriver-$GECKODRIVER_VERSION \ + && ln -fs /opt/geckodriver-$GECKODRIVER_VERSION /usr/bin/geckodriver \ + && ln -fs /opt/geckodriver-$GECKODRIVER_VERSION /usr/bin/wires #======================== # Selenium Configuration diff --git a/NodeFirefoxDebug/entry_point.sh b/NodeFirefoxDebug/entry_point.sh index e83f0fb6ec..dbc9d04141 100644 --- a/NodeFirefoxDebug/entry_point.sh +++ b/NodeFirefoxDebug/entry_point.sh @@ -38,7 +38,7 @@ env | cut -f 1 -d "=" | sort > asroot $(for E in $(grep -vxFf asseluser asroot); do echo $E=$(eval echo \$$E); done) \ DISPLAY=$DISPLAY \ xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \ - java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ + java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ -role node \ -hub http://$HUB_PORT_4444_TCP_ADDR:$HUB_PORT_4444_TCP_PORT/grid/register \ ${REMOTE_HOST_PARAM} \ diff --git a/README.md b/README.md index ab6812127a..e0de260473 100644 --- a/README.md +++ b/README.md @@ -21,14 +21,14 @@ Images included: - __selenium/node-firefox-debug__: Selenium node with Firefox installed and runs a VNC server, needs to be connected to a Selenium Grid Hub ## Running the images - + When executing docker run for an image with chrome browser please add volume mount `-v /dev/shm:/dev/shm` to use the host's shared memory. ``` bash $ docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:2.53.1 ``` -This is a workaround to node-chrome crash in docker container issue: https://code.google.com/p/chromium/issues/detail?id=519952 +This is a workaround to node-chrome crash in docker container issue: https://code.google.com/p/chromium/issues/detail?id=519952 ### Standalone Chrome and Firefox @@ -56,6 +56,31 @@ $ docker run -d --link selenium-hub:hub selenium/node-chrome:2.53.1 $ docker run -d --link selenium-hub:hub selenium/node-firefox:2.53.1 ``` +### Specifying versions + +By default the latest stable versions will be used, however you can override +these using the following environment variables: + +- `SELENIUM_VERSION` - version of the Selenium server + - latest stable: `2.53.1` + - latest beta: `3.0.0-beta4` +- `FIREFOX_VERSION` - version of Firefox (only applies to Firefox images) + - latest release: `49.0.1` + - previous release: `48.0.2` + - latest ESR: `45.4.0esr` + - previous ESR: `38.8.0esr` + +Note that as the latest releases of Firefox work best with Selenium 3.0, which +is currently in beta, the latest release supported by 2.53.x is `47.0.1` and is +also available (and the default). + +For example, the following will start a standalone server using Selenium 3.0.0-beta4 +and Firefox 49.0.1: + +```bash +$ docker run -d -p 4444:4444 -e SELENIUM_VERSION=3.0.0-beta4 -e FIREFOX_VERSION=49.0.1 selenium/standalone-firefox:latest +``` + ### JAVA_OPTS Java Environment Options You can pass `JAVA_OPTS` environment variable to java process. @@ -135,7 +160,7 @@ $ docker run -d -P -p 5901:5900 --link selenium-hub:hub selenium/node-firefox-de to connect to the Chrome node on 5900 and the Firefox node on 5901 (assuming those node are free, and reachable). -And for standalone: +And for standalone: ``` bash $ docker run -d -p 4444:4444 -p :5900 selenium/standalone-chrome-debug:2.53.1 # OR diff --git a/Standalone/entry_point.sh b/Standalone/entry_point.sh index 548366f39e..ebddd21221 100644 --- a/Standalone/entry_point.sh +++ b/Standalone/entry_point.sh @@ -9,13 +9,17 @@ function shutdown { wait $NODE_PID } +if [ ! -z "$FIREFOX_VERSION" ]; then + sudo ln -fs /opt/firefox/${FIREFOX_VERSION}/firefox /usr/bin/firefox +fi + if [ ! -z "$SE_OPTS" ]; then echo "appending selenium options: ${SE_OPTS}" fi SERVERNUM=$(get_server_num) xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \ - java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ + java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ ${SE_OPTS} & NODE_PID=$! diff --git a/StandaloneChrome/entry_point.sh b/StandaloneChrome/entry_point.sh index 548366f39e..c88653d6f0 100644 --- a/StandaloneChrome/entry_point.sh +++ b/StandaloneChrome/entry_point.sh @@ -15,7 +15,7 @@ fi SERVERNUM=$(get_server_num) xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \ - java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ + java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ ${SE_OPTS} & NODE_PID=$! diff --git a/StandaloneDebug/entry_point.sh b/StandaloneDebug/entry_point.sh index 75dafb8e3b..e37da31408 100644 --- a/StandaloneDebug/entry_point.sh +++ b/StandaloneDebug/entry_point.sh @@ -23,7 +23,7 @@ sudo -E -i -u seluser \ $(for E in $(grep -vxFf asseluser asroot); do echo $E=$(eval echo \$$E); done) \ DISPLAY=$DISPLAY \ xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \ - java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ + java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ ${SE_OPTS} & NODE_PID=$! diff --git a/StandaloneFirefox/entry_point.sh b/StandaloneFirefox/entry_point.sh index 548366f39e..c88653d6f0 100644 --- a/StandaloneFirefox/entry_point.sh +++ b/StandaloneFirefox/entry_point.sh @@ -15,7 +15,7 @@ fi SERVERNUM=$(get_server_num) xvfb-run -n $SERVERNUM --server-args="-screen 0 $GEOMETRY -ac +extension RANDR" \ - java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone.jar \ + java ${JAVA_OPTS} -jar /opt/selenium/selenium-server-standalone-${SELENIUM_VERSION}.jar \ ${SE_OPTS} & NODE_PID=$!