141 lines
3.7 KiB
Bash
Executable File
141 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
APP_ROOT="$(dirname "$(dirname "$(readlink -fm "$0")")")"
|
|
TEST_CONTAINER=bonitoo_e2e
|
|
INFLUX2_CONTAINER=influx2_solo
|
|
E2E_MAP_DIR=/tmp/e2e
|
|
INFLUX2_HOST=$(sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" ${INFLUX2_CONTAINER})
|
|
INFLUX2_URL="http://${INFLUX2_HOST}:8086"
|
|
#TAGS="@influx-influx"
|
|
ACTIVE_CONF=development
|
|
|
|
POSITIONAL=()
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
key="$1"
|
|
|
|
case $key in
|
|
-t| --tags)
|
|
TAGS="$2"
|
|
shift; # past argument
|
|
shift; # past val
|
|
;;
|
|
-c| --config)
|
|
ACTIVE_CONF="$2"
|
|
shift;
|
|
shift;
|
|
;;
|
|
-b| --base)
|
|
BASE_DIR="$2"
|
|
shift;
|
|
shift;
|
|
esac
|
|
done
|
|
|
|
echo E2E_CLOUD_DEFAULT_USER_USERNAME = ${E2E_CLOUD_DEFAULT_USER_USERNAME}
|
|
|
|
echo Working from ${APP_ROOT}
|
|
|
|
DOCKER_TEST_CMD="npm test -- activeConf=${ACTIVE_CONF}"
|
|
|
|
if [[ -n "${TAGS}" ]]; then
|
|
DOCKER_TEST_CMD="${DOCKER_TEST_CMD} --tags ${TAGS}"
|
|
fi
|
|
|
|
if [[ -n "${BASE_DIR+x}" ]]; then
|
|
DOCKER_TEST_CMD="${DOCKER_TEST_CMD} ${BASE_DIR}"
|
|
fi
|
|
|
|
echo DOCKER_TEST_CMD = ${DOCKER_TEST_CMD}
|
|
|
|
if [ ${ACTIVE_CONF} = 'cloud' ]; then
|
|
echo configuring for cloud
|
|
if [ -z ${E2E_CLOUD_INFLUX_URL+x} ]; then
|
|
echo
|
|
echo E2E_CLOUD_INFLUX_URL is unset
|
|
echo But cloud configuration chosen
|
|
echo
|
|
echo Please set E2E_CLOUD_INFLUX_URL to use cloud configuration
|
|
exit 1
|
|
else
|
|
echo E2E_CLOUD_INFLUX_URL ${E2E_CLOUD_INFLUX_URL}
|
|
INFLUX2_URL=${E2E_CLOUD_INFLUX_URL}
|
|
fi
|
|
|
|
if [ -z ${E2E_CLOUD_DEFAULT_USER_PASSWORD} ]; then
|
|
echo
|
|
echo E2E_CLOUD_DEFAULT_USER_PASSWORD is unset
|
|
echo But cloud configuration chosen
|
|
echo
|
|
echo Please set E2E_CLOUD_DEFAULT_USER_PASSWORD to use cloud configuration
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "------ Targeting influx at ${INFLUX2_URL} ------"
|
|
|
|
|
|
# Tear down running test container
|
|
echo "----- Tearing down test container ${TEST_CONTAINER} ------"
|
|
|
|
if docker container inspect ${TEST_CONTAINER} > /dev/null 2>&1
|
|
then
|
|
|
|
if [ "$( docker container inspect -f '{{.State.Running}}' ${TEST_CONTAINER} )" == "true" ]; then
|
|
|
|
echo stopping ${TEST_CONTAINER}
|
|
sudo docker stop ${TEST_CONTAINER}
|
|
|
|
fi
|
|
|
|
echo removing ${TEST_CONTAINER}
|
|
sudo docker rm ${TEST_CONTAINER}
|
|
|
|
fi
|
|
|
|
# Ensure mapped dirs are current
|
|
echo "----- Ensuring linked dir for volumes is current ------"
|
|
if [ -L ${E2E_MAP_DIR}/etc ]; then
|
|
echo ${E2E_MAP_DIR}/etc is linked
|
|
echo removing ${E2E_MAP_DIR}
|
|
sudo rm -r ${E2E_MAP_DIR}
|
|
fi
|
|
sudo mkdir -p ${E2E_MAP_DIR}
|
|
echo linking ${APP_ROOT}/etc
|
|
sudo ln -s ${APP_ROOT}/etc ${E2E_MAP_DIR}/etc
|
|
|
|
echo "------ (Re)start Selenoid ------"
|
|
source ${APP_ROOT}/scripts/selenoid.sh
|
|
echo SELENOID_HOST is ${SELENOID_HOST}
|
|
|
|
# Rebuild and start test container
|
|
echo "----- Rebuilding test container ${TEST_CONTAINER} ------"
|
|
if [[ -d "$APP_ROOT/report" ]]; then
|
|
echo cleaning "$APP_ROOT/report"
|
|
sudo npm run clean
|
|
rm -rdf report
|
|
fi
|
|
|
|
DOCKER_ENVARS="-e SELENIUM_REMOTE_URL=http://${SELENOID_HOST}:4444/wd/hub -e E2E_${ACTIVE_CONF^^}_INFLUX_URL=${INFLUX2_URL}"
|
|
|
|
if [ -n ${E2E_CLOUD_DEFAULT_USER_PASSWORD} ]; then
|
|
DOCKER_ENVARS="${DOCKER_ENVARS} -e E2E_CLOUD_DEFAULT_USER_PASSWORD=${E2E_CLOUD_DEFAULT_USER_PASSWORD}"
|
|
fi
|
|
|
|
sudo docker build -t e2e-${TEST_CONTAINER} -f scripts/Dockerfile.tests .
|
|
sudo docker run -it -v `pwd`/report:/home/e2e/report -v `pwd`/screenshots:/home/e2e/screenshots \
|
|
-v /tmp/e2e/etc:/home/e2e/etc -v /tmp/e2e/downloads:/home/e2e/downloads \
|
|
${DOCKER_ENVARS} --detach \
|
|
--name ${TEST_CONTAINER} e2e-${TEST_CONTAINER}:latest
|
|
|
|
echo ACTIVE_CONF ${ACTIVE_CONF} BASE_DIR ${BASE_DIR} TAGS ${TAGS}
|
|
|
|
sudo docker exec ${TEST_CONTAINER} ${DOCKER_TEST_CMD}
|
|
|
|
sudo docker exec ${TEST_CONTAINER} npm run report:html
|
|
sudo docker exec ${TEST_CONTAINER} npm run report:junit
|
|
|
|
sudo docker stop ${TEST_CONTAINER}
|
|
sudo docker stop selenoid
|
|
|