Skip to content

Commit ad0a7a6

Browse files
authored
Setting driver and browser path via configuration (#2017)
[deploy]
1 parent b365646 commit ad0a7a6

File tree

17 files changed

+83
-57
lines changed

17 files changed

+83
-57
lines changed

.github/workflows/build-test.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ jobs:
4141
- name: Build Docker images
4242
run: VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} make build
4343
- name: Test Docker images
44-
run: USE_RANDOM_USER_ID=${USE_RANDOM_USER} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} make test
44+
uses: nick-invision/retry@v2.8.3
45+
with:
46+
timeout_minutes: 20
47+
max_attempts: 3
48+
command: |
49+
USE_RANDOM_USER_ID=${USE_RANDOM_USER} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} make test
4550
env:
4651
USE_RANDOM_USER: ${{ matrix.use-random-user }}
47-

Distributor/start-selenium-grid-distributor.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,21 @@ if [ ! -z "$SE_DISTRIBUTOR_PORT" ]; then
5454
PORT_CONFIG="--port ${SE_DISTRIBUTOR_PORT}"
5555
fi
5656

57-
EXTRA_LIBS="/opt/selenium/selenium-http-jdk-client.jar"
57+
EXTRA_LIBS=""
5858

5959
if [ ! -z "$SE_ENABLE_TRACING" ]; then
6060
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
61+
EXTRA_LIBS="--ext "
6162
EXTRA_LIBS=${EXTRA_LIBS}:${EXTERNAL_JARS}
6263
echo "Tracing is enabled"
6364
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
6465
else
6566
echo "Tracing is disabled"
6667
fi
6768

68-
java ${JAVA_OPTS:-$SE_JAVA_OPTS} -Dwebdriver.http.factory=jdk-http-client \
69+
java ${JAVA_OPTS:-$SE_JAVA_OPTS} \
6970
-jar /opt/selenium/selenium-server.jar \
70-
--ext ${EXTRA_LIBS} distributor \
71+
${EXTRA_LIBS} distributor \
7172
--sessions-host "${SE_SESSIONS_MAP_HOST}" --sessions-port "${SE_SESSIONS_MAP_PORT}" \
7273
--sessionqueue-host "${SE_SESSION_QUEUE_HOST}" --sessionqueue-port "${SE_SESSION_QUEUE_PORT}" \
7374
--publish-events tcp://"${SE_EVENT_BUS_HOST}":"${SE_EVENT_BUS_PUBLISH_PORT}" \

EventBus/start-selenium-grid-eventbus.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,21 @@ if [ ! -z "$SE_OPTS" ]; then
1919
echo "Appending Selenium options: ${SE_OPTS}"
2020
fi
2121

22-
EXTRA_LIBS="/opt/selenium/selenium-http-jdk-client.jar"
22+
EXTRA_LIBS=""
2323

2424
if [ ! -z "$SE_ENABLE_TRACING" ]; then
2525
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
26+
EXTRA_LIBS="--ext "
2627
EXTRA_LIBS=${EXTRA_LIBS}:${EXTERNAL_JARS}
2728
echo "Tracing is enabled"
2829
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
2930
else
3031
echo "Tracing is disabled"
3132
fi
3233

33-
java ${JAVA_OPTS:-$SE_JAVA_OPTS} -Dwebdriver.http.factory=jdk-http-client \
34+
java ${JAVA_OPTS:-$SE_JAVA_OPTS} \
3435
-jar /opt/selenium/selenium-server.jar \
35-
--ext ${EXTRA_LIBS} event-bus \
36+
${EXTRA_LIBS} event-bus \
3637
--bind-host ${SE_BIND_HOST} \
3738
${HOST_CONFIG} \
3839
${PORT_CONFIG} \

Hub/start-selenium-grid-hub.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ if [ ! -z "$SE_SUB_PATH" ]; then
2222
SUB_PATH_CONFIG="--sub-path ${SE_SUB_PATH}"
2323
fi
2424

25-
EXTRA_LIBS="/opt/selenium/selenium-http-jdk-client.jar"
25+
EXTRA_LIBS=""
2626

2727
if [ ! -z "$SE_ENABLE_TRACING" ]; then
2828
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
29+
EXTRA_LIBS="--ext "
2930
EXTRA_LIBS=${EXTRA_LIBS}:${EXTERNAL_JARS}
3031
echo "Tracing is enabled"
3132
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
@@ -34,9 +35,9 @@ else
3435
fi
3536

3637

37-
java ${JAVA_OPTS:-$SE_JAVA_OPTS} -Dwebdriver.http.factory=jdk-http-client \
38+
java ${JAVA_OPTS:-$SE_JAVA_OPTS} \
3839
-jar /opt/selenium/selenium-server.jar \
39-
--ext ${EXTRA_LIBS} hub \
40+
${EXTRA_LIBS} hub \
4041
--session-request-timeout ${SE_SESSION_REQUEST_TIMEOUT} \
4142
--session-retry-interval ${SE_SESSION_RETRY_INTERVAL} \
4243
--relax-checks ${SE_RELAX_CHECKS} \

NodeBase/generate_config

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,11 @@ echo "max-sessions = ${SE_NODE_MAX_SESSIONS}
5252
" >> "$FILENAME"
5353

5454
SE_NODE_BROWSER_NAME=$(cat /opt/selenium/browser_name)
55-
if [[ "${SE_NODE_BROWSER_NAME}" == "chrome" ]]; then
56-
SE_NODE_BROWSER_VERSION=$(short_version $(google-chrome --version | awk '{print $3}'))
57-
elif [[ "${SE_NODE_BROWSER_NAME}" == "firefox" ]]; then
58-
SE_NODE_BROWSER_VERSION=$(short_version $(firefox --version | awk '{print $3}'))
59-
elif [[ "${SE_NODE_BROWSER_NAME}" == "MicrosoftEdge" ]]; then
60-
SE_NODE_BROWSER_VERSION=$(short_version $(microsoft-edge --version | awk '{print $3}'))
61-
fi
55+
SE_NODE_BROWSER_VERSION=$(short_version $(cat /opt/selenium/browser_version))
56+
SE__BROWSER_BINARY_LOCATION=$(cat /opt/selenium/browser_binary_location)
6257

6358
if [[ -z "$SE_NODE_STEREOTYPE" ]]; then
64-
SE_NODE_STEREOTYPE="{\"browserName\": \"${SE_NODE_BROWSER_NAME}\", \"browserVersion\": \"${SE_NODE_BROWSER_VERSION}\", \"platformName\": \"Linux\"}"
59+
SE_NODE_STEREOTYPE="{\"browserName\": \"${SE_NODE_BROWSER_NAME}\", \"browserVersion\": \"${SE_NODE_BROWSER_VERSION}\", \"platformName\": \"Linux\", ${SE__BROWSER_BINARY_LOCATION}}"
6560
else
6661
SE_NODE_STEREOTYPE="$SE_NODE_STEREOTYPE"
6762
fi

NodeBase/start-selenium-node.sh

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ if [ "$GENERATE_CONFIG" = true ]; then
3636
/opt/bin/generate_config
3737
fi
3838

39-
EXTRA_LIBS="/opt/selenium/selenium-http-jdk-client.jar"
39+
EXTRA_LIBS=""
4040

4141
if [ ! -z "$SE_ENABLE_TRACING" ]; then
4242
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
43+
EXTRA_LIBS="--ext "
4344
EXTRA_LIBS=${EXTRA_LIBS}:${EXTERNAL_JARS}
4445
echo "Tracing is enabled"
4546
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
@@ -51,9 +52,16 @@ echo "Selenium Grid Node configuration: "
5152
cat "$CONFIG_FILE"
5253
echo "Starting Selenium Grid Node..."
5354

54-
java ${JAVA_OPTS:-$SE_JAVA_OPTS} -Dwebdriver.http.factory=jdk-http-client \
55+
CHROME_DRIVER_PATH_PROPERTY=-Dwebdriver.chrome.driver=/usr/bin/chromedriver
56+
EDGE_DRIVER_PATH_PROPERTY=-Dwebdriver.edge.driver=/usr/bin/msedgedriver
57+
GECKO_DRIVER_PATH_PROPERTY=-Dwebdriver.gecko.driver=/usr/bin/geckodriver
58+
59+
java ${JAVA_OPTS:-$SE_JAVA_OPTS} \
60+
${CHROME_DRIVER_PATH_PROPERTY} \
61+
${EDGE_DRIVER_PATH_PROPERTY} \
62+
${GECKO_DRIVER_PATH_PROPERTY} \
5563
-jar /opt/selenium/selenium-server.jar \
56-
--ext ${EXTRA_LIBS} node \
64+
${EXTRA_LIBS} node \
5765
--bind-host ${SE_BIND_HOST} \
5866
--config "$CONFIG_FILE" \
5967
${SE_OPTS}

NodeChrome/Dockerfile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,15 @@ RUN if [ ! -z "$CHROME_DRIVER_VERSION" ]; \
4949
&& echo "Using ChromeDriver version: "$CHROME_DRIVER_VERSION \
5050
&& wget --no-verbose -O /tmp/chromedriver_linux64.zip $CHROME_DRIVER_URL \
5151
&& rm -rf /opt/selenium/chromedriver \
52-
&& sudo unzip /tmp/chromedriver_linux64.zip -d /opt/selenium \
52+
&& unzip /tmp/chromedriver_linux64.zip -d /opt/selenium \
5353
&& rm /tmp/chromedriver_linux64.zip \
54-
&& sudo mv /opt/selenium/chromedriver-linux64/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
55-
&& sudo chmod 755 /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
54+
&& mv /opt/selenium/chromedriver-linux64/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
55+
&& chmod 755 /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION \
5656
&& sudo ln -fs /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver
5757

5858
#============================================
59-
# Dumping Browser name and version for config
59+
# Dumping Browser information for config
6060
#============================================
6161
RUN echo "chrome" > /opt/selenium/browser_name
62+
RUN google-chrome --version | awk '{print $3}' > /opt/selenium/browser_version
63+
RUN echo "\"goog:chromeOptions\": {\"binary\": \"/usr/bin/google-chrome\"}" > /opt/selenium/browser_binary_location

NodeDocker/start-selenium-grid-docker.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,21 @@ if [ ! -z "$SE_NODE_GRID_URL" ]; then
2929
SE_GRID_URL="--grid-url ${SE_NODE_GRID_URL}"
3030
fi
3131

32-
EXTRA_LIBS="/opt/selenium/selenium-http-jdk-client.jar"
32+
EXTRA_LIBS=""
3333

3434
if [ ! -z "$SE_ENABLE_TRACING" ]; then
3535
EXTERNAL_JARS=$(</external_jars/.classpath.txt)
36+
EXTRA_LIBS="--ext "
3637
EXTRA_LIBS=${EXTRA_LIBS}:${EXTERNAL_JARS}
3738
echo "Tracing is enabled"
3839
echo "Classpath will be enriched with these external jars : " ${EXTRA_LIBS}
3940
else
4041
echo "Tracing is disabled"
4142
fi
4243

43-
java ${JAVA_OPTS:-$SE_JAVA_OPTS} -Dwebdriver.http.factory=jdk-http-client \
44+
java ${JAVA_OPTS:-$SE_JAVA_OPTS} \
4445
-jar /opt/selenium/selenium-server.jar \
45-
--ext ${EXTRA_LIBS} node \
46+
${EXTRA_LIBS} node \
4647
--publish-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_PUBLISH_PORT} \
4748
--subscribe-events tcp://"${SE_EVENT_BUS_HOST}":${SE_EVENT_BUS_SUBSCRIBE_PORT} \
4849
--bind-host ${SE_BIND_HOST} \

NodeEdge/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ RUN if [ -z "$EDGE_DRIVER_VERSION" ]; \
4949
&& sudo ln -fs /opt/selenium/msedgedriver-$EDGE_DRIVER_VERSION /usr/bin/msedgedriver
5050

5151
#============================================
52-
# Dumping Browser name and version for config
52+
# Dumping Browser information for config
5353
#============================================
5454
RUN echo "MicrosoftEdge" > /opt/selenium/browser_name
55+
RUN microsoft-edge --version | awk '{print $3}' > /opt/selenium/browser_version
56+
RUN echo "\"ms:edgeOptions\": {\"binary\": \"/usr/bin/microsoft-edge\"}" > /opt/selenium/browser_binary_location

NodeFirefox/Dockerfile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ USER root
1212
ARG FIREFOX_VERSION=latest
1313
RUN FIREFOX_DOWNLOAD_URL=$(if [ $FIREFOX_VERSION = "latest" ] || [ $FIREFOX_VERSION = "beta-latest" ] || [ $FIREFOX_VERSION = "nightly-latest" ] || [ $FIREFOX_VERSION = "devedition-latest" ] || [ $FIREFOX_VERSION = "esr-latest" ]; then echo "https://download.mozilla.org/?product=firefox-$FIREFOX_VERSION-ssl&os=linux64&lang=en-US"; else echo "https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2"; fi) \
1414
&& apt-get update -qqy \
15-
&& apt-get -qqy --no-install-recommends install firefox libavcodec-extra \
15+
&& apt-get -qqy --no-install-recommends install libavcodec-extra \
1616
libgtk-3-dev libdbus-glib-1-dev \
1717
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
1818
&& wget --no-verbose -O /tmp/firefox.tar.bz2 $FIREFOX_DOWNLOAD_URL \
19-
&& apt-get -y purge firefox \
2019
&& rm -rf /opt/firefox \
2120
&& tar -C /opt -xjf /tmp/firefox.tar.bz2 \
2221
&& rm /tmp/firefox.tar.bz2 \
@@ -40,6 +39,8 @@ RUN GK_VERSION=$(if [ ${GECKODRIVER_VERSION:-latest} = "latest" ]; then echo "0.
4039
USER 1200
4140

4241
#============================================
43-
# Dumping Browser name and version for config
42+
# Dumping Browser information for config
4443
#============================================
4544
RUN echo "firefox" > /opt/selenium/browser_name
45+
RUN firefox --version | awk '{print $3}' > /opt/selenium/browser_version
46+
RUN echo "\"moz:firefoxOptions\": {\"binary\": \"/usr/bin/firefox\"}" > /opt/selenium/browser_binary_location

0 commit comments

Comments
 (0)