47 lines
1.6 KiB
Bash
47 lines
1.6 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
HUB_RUNNING=$(docker inspect --format="{{ .State.Running }}" selenium-hub 2> /dev/null)
|
||
|
|
||
|
if [ $? -eq 1 ]; then
|
||
|
echo "Selenium Hub does not exist. Attempting to run it..."
|
||
|
docker run -d -p 4444:4444 --name selenium-hub --restart always selenium/hub:2.53.0
|
||
|
sleep 2
|
||
|
fi
|
||
|
|
||
|
if [ "$HUB_RUNNING" == "false" ]; then
|
||
|
echo "Selenium Hub is not running. Attempting to start it..."
|
||
|
docker start selenium-hub
|
||
|
sleep 2
|
||
|
fi
|
||
|
|
||
|
|
||
|
CONTAINER_NAME="sg-functional-test-chrome-$JOB_NAME"
|
||
|
# remove any pre-existing container
|
||
|
if [ $(docker ps -a | grep $CONTAINER_NAME | awk '{print $NF}' | wc -l) -gt 0 ]; then
|
||
|
docker rm -f $CONTAINER_NAME 1>/dev/null
|
||
|
fi
|
||
|
|
||
|
# if a debug flag is passed in, use the debug image and open vnc screen sharing
|
||
|
if [[ $@ == *"--debug"* ]]; then
|
||
|
ip=$(grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' <<< "$@")
|
||
|
docker run -d --link selenium-hub:hub --name $CONTAINER_NAME -p 5900:5900 -v /dev/shm:/dev/shm selenium/node-chrome-debug:2.53.0 1>/dev/null
|
||
|
sleep 2 # wait a bit for container to start
|
||
|
open vnc://:secret@"$ip":5900
|
||
|
else
|
||
|
docker run -d --link selenium-hub:hub --name $CONTAINER_NAME -v /dev/shm:/dev/shm selenium/node-chrome:2.53.0 1>/dev/null
|
||
|
sleep 2
|
||
|
fi
|
||
|
|
||
|
# run actual test command in a subshell to be able to rm docker container afterwards
|
||
|
# this command is for Jenkins job to by pass the Makefile.js
|
||
|
(
|
||
|
./node_modules/.bin/wdio test/functional/webdriver/wdio.conf.js "$@" 2> /dev/null
|
||
|
)
|
||
|
|
||
|
# save exit code of subshell
|
||
|
testresult=$?
|
||
|
|
||
|
docker stop $CONTAINER_NAME 1>/dev/null && docker rm $CONTAINER_NAME 1>/dev/null
|
||
|
|
||
|
exit $testresult
|