freeCodeCamp/cypress/run-e2e.sh

83 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
gastby_pid=''
api_pid=''
application_host='http://localhost:8000'
cypress_cmd='cypress:open'
finally() {
echo "End to end bash script exiting gracefully"
local exit_code="${1:-0}"
# This is the clean up.
# Find any api, client, or server node processes
local hanging_api_processes=$(ps aux | grep -v grep | grep api-server/node_modules | awk '{print $2}')
local hanging_client_processes=$(ps aux | grep -v grep | grep client/node_modules | awk '{print $2}')
local hanging_server_processes=$(ps aux | grep -v grep | grep 'node production-start.js' | awk '{print $2}')
# Send kill signal to the processes
local processes=($hanging_api_processes $hanging_client_processes $hanging_server_processes)
for pid in ${processes[@]}; do
if [ ${#pid} -gt "0" ]; then
kill -9 $pid &>/dev/null
fi
done
kill -9 $gastby_pid $api_pid &>/dev/null
echo "Finally exiting with a status code of ${exit_code}"
exit "${exit_code}"
}
trap finally SIGINT
run_development_application() {
cd client
npm run stand-alone &
gastby_pid=$!
cd ../api-server
npm start &
api_pid=$!
cypress_cmd='cypress:run'
cd ../
}
run_production_application() {
cd client
npm run build
npm run serve &
gastby_pid=$!
cd ../
application_host='http://localhost:9000/'
cypress_cmd='cypress:run'
}
if [ "$NODE_ENV" = "production" ]; then
run_production_application
else
run_development_application
fi
while true; do
curl $application_host &>/dev/null
curl_exit_code=$?
if [ $curl_exit_code = "0" ]; then
break
else
sleep 10
fi
done
npm run $cypress_cmd
finally $?