70 lines
2.3 KiB
70 lines
2.3 KiB
#!/bin/bash
|
|
|
|
if ! [ -f /.dockerenv ] && ! grep -q 'devices:/docker' /proc/1/cgroup ; then
|
|
echo "Not running inside docker, exiting to avoid data damage." >&2
|
|
exit 1
|
|
fi
|
|
|
|
set -e
|
|
set -u
|
|
|
|
PASSWORD="selenium"
|
|
|
|
if [ -z "${1:-}" ] ; then
|
|
echo "Usage: $0 <testsystem> [<output_directory>] [junit]" >&2
|
|
echo
|
|
echo "Usage examples:
|
|
|
|
$0 192.168.88.162
|
|
$0 192.168.88.162 /results/ junit"
|
|
exit 1
|
|
fi
|
|
|
|
SERVER="${1}"
|
|
OUTPUT_DIRECTORY="${2:-/code/}"
|
|
|
|
# workaround for new Selenium::Remote::Driver (see Dockerfile)
|
|
export PERL5LIB=/home/selenium/Selenium-Remote-Driver/lib/
|
|
|
|
# vnc
|
|
echo "Setting VNC password"
|
|
printf '%s\n%s\n\n' "${PASSWORD}" "${PASSWORD}" | vncpasswd >/dev/null
|
|
PASSWORD_ENCODED=$(hexdump -v -e '"\\""x" 1/1 "%02X"' < "${HOME}/.vnc/passwd")
|
|
xvnc_process=$(pgrep -f 'Xtigervnc :99' || true)
|
|
if [ -n "${xvnc_process:-}" ] ; then
|
|
echo "Warning: existing VNC server found, not restarting Xtigervnc process (PID: $xvnc_process)."
|
|
else
|
|
echo "Starting VNCserver on display :99"
|
|
vncserver -localhost no -geometry 1280x1024 :99
|
|
fi
|
|
|
|
echo "Firefox version:"
|
|
firefox --version
|
|
|
|
# ensure we don't leave any process behind causing problems with re-execution
|
|
pkill -f 'geckodriver' || true
|
|
DISPLAY=:99 ~/geckodriver &
|
|
|
|
echo "################################################################################"
|
|
echo "Finished main setup, now running tests ..."
|
|
echo "Selenium server log file available at /home/selenium/selenium.log"
|
|
echo "Watch at test runs by connecting via VNC (password: '${PASSWORD}'):"
|
|
echo "echo -e '$PASSWORD_ENCODED' >/tmp/vncpasswd ; vncviewer geometry=1280x1024x16 passwd=/tmp/vncpasswd localhost:5999"
|
|
|
|
RC=0
|
|
if [ -n "${3:-}" ] && [ "${3:-}" = "junit" ] ; then
|
|
CATALYST_SERVER=https://${SERVER}:1443/ prove -m --formatter TAP::Formatter::JUnit -l -It/lib t/selenium/*.t | \
|
|
tee -a "${OUTPUT_DIRECTORY}/selenium.xml" || RC=$?
|
|
else
|
|
CATALYST_SERVER="https://${SERVER}:1443" prove -m -v --color -l -It/lib t/selenium/*.t | \
|
|
tee -a "${OUTPUT_DIRECTORY}/selenium.pretty" || RC=$?
|
|
fi
|
|
|
|
echo "Finished test execution, test execution returned with exit code ${RC}."
|
|
for file in "${OUTPUT_DIRECTORY}/selenium.pretty" "${OUTPUT_DIRECTORY}/selenium.xml" ; do
|
|
if [ -f "$file" ] ; then
|
|
echo "Test results available at ${file}"
|
|
fi
|
|
done
|
|
echo "################################################################################"
|