LearningSalesForceCommerceC.../storefront-reference-architecture/bin/test-functional-docker.sh

47 lines
1.6 KiB
Bash
Raw Normal View History

2021-12-21 10:57:31 -08:00
#!/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