mirror of
https://github.com/wassname/talk.git
synced 2026-06-30 16:50:44 +08:00
93 lines
2.2 KiB
Bash
Executable File
93 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
CIRCLE_TEST_REPORTS=${CIRCLE_TEST_REPORTS:-./test/e2e/reports}
|
|
CIRCLE_BRANCH=${CIRCLE_BRANCH:-master}
|
|
|
|
# Amount of retries before failure.
|
|
E2E_MAX_RETRIES=${E2E_MAX_RETRIES:-1}
|
|
|
|
# Amount of seconds between tests.
|
|
E2E_SLEEP_BETWEEN_TESTS=${E2E_SLEEP_BETWEEN_TESTS:-1}
|
|
|
|
# Safari >= 8 has issues connecting to browserstack-local. Safari < 8 is too old.
|
|
BROWSERS="chrome firefox ie edge" #safari
|
|
|
|
if [[ "${CIRCLE_BRANCH}" == "master" ]]; then
|
|
|
|
# List of failed browsers.
|
|
failedBrowsers=
|
|
|
|
# List of succeeded browsers.
|
|
succeededBrowsers=
|
|
|
|
exitCode=0
|
|
|
|
browserstack() {
|
|
|
|
# Current number of tries.
|
|
try=${2:-0}
|
|
|
|
echo "-- Start e2e for $1 #$try --"
|
|
|
|
REPORTS_FOLDER="$CIRCLE_TEST_REPORTS/$1" yarn e2e-browserstack --env "$1"
|
|
|
|
# Determine exit code.
|
|
result=$?
|
|
if [ "$result" -ne "0" ]; then
|
|
echo "-- Failed e2e for $1 #$try --"
|
|
|
|
# Try again until E2E_MAX_RETRIES is reached.
|
|
if [ "$try" -lt "$E2E_MAX_RETRIES" ]; then
|
|
let try=try+1
|
|
|
|
# Sleep a bit to let browserstack-local close properly.
|
|
sleep "$E2E_SLEEP_BETWEEN_TESTS"
|
|
|
|
browserstack "$1" "$try"
|
|
return
|
|
fi
|
|
|
|
# Failed, add to list of failed browsers.
|
|
failedBrowsers="$failedBrowsers $1"
|
|
|
|
# Remember exit code.
|
|
exitCode=$result
|
|
else
|
|
echo "-- Success e2e for $1 #$try --"
|
|
|
|
# Succeeded, add to list of succeeded browsers.
|
|
succeededBrowsers="$succeededBrowsers $1"
|
|
eval "browser_${1}_succeeded_at=$try"
|
|
fi
|
|
|
|
# Sleep a bit to let browserstack-local close properly.
|
|
sleep "$E2E_SLEEP_BETWEEN_TESTS"
|
|
}
|
|
|
|
# Test using browserstack.
|
|
for browser in $BROWSERS
|
|
do
|
|
browserstack "$browser"
|
|
done
|
|
|
|
|
|
# Print information about succeeded browsers.
|
|
for x in $succeededBrowsers
|
|
do
|
|
echo "Succeeded $x at try #$(eval "echo \$browser_${x}_succeeded_at")"
|
|
done
|
|
|
|
# Print information about failed browsers.
|
|
for x in $failedBrowsers
|
|
do
|
|
echo "Failed $x"
|
|
done
|
|
exit $exitCode
|
|
else
|
|
# When browserstack is not available test locally using chrome headless.
|
|
REPORTS_FOLDER="$CIRCLE_TEST_REPORTS/chrome" yarn e2e -- --env chrome-headless
|
|
|
|
# Will exit with status of last command.
|
|
exit $?
|
|
fi
|