spiff-arena/spiffworkflow-frontend/bin/cypress_pilot

67 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
function error_handler() {
>&2 echo "Exited with BAD EXIT CODE '${2}' in ${0} script at line: ${1}."
exit "$2"
}
trap 'error_handler ${LINENO} $?' ERR
set -o errtrace -o errexit -o nounset -o pipefail
# see also: npx cypress run --env grep="can filter",grepFilterSpecs=true
# https://github.com/cypress-io/cypress/tree/develop/npm/grep#pre-filter-specs-grepfilterspecs
command="${1:-}"
if [[ -z "$command" ]]; then
command=open
else
shift
fi
if [[ -n "${ATTEMPTS:-}" ]]; then
if [[ "$command" == "open" ]]; then
echo "ATTEMPTS is ignored when running cypress open"
ATTEMPTS=1
fi
else
ATTEMPTS=1
fi
if [[ -z "${CYPRESS_SPIFFWORKFLOW_FRONTEND_AUTH_WITH_KEYCLOAK:-}" ]]; then
export CYPRESS_SPIFFWORKFLOW_FRONTEND_AUTH_WITH_KEYCLOAK=true
fi
cypress_run_file="/var/tmp/cypress_run"
echo "Recording stats to ${cypress_run_file}"
if [[ ! -f "$cypress_run_file" ]]; then
echo "success,duration,start_time,end_time,frontend_url" >"$cypress_run_file"
fi
frontend_url="${SPIFFWORKFLOW_FRONTEND_URL:-localhost}"
for attempt in $(seq 1 "$ATTEMPTS" ); do
echo "Running attempt: ${attempt}"
start_time=$(date +%s)
success="false"
# spec_pattern="cypress/pilot/**/*.cy.{js,jsx,ts,tsx}"
spec_pattern="cypress/pilot/**/*.cy.{js,jsx,ts,tsx}"
if ./node_modules/.bin/cypress "$command" -c specPattern="${spec_pattern}" --e2e --browser chrome "$@"; then
success="true"
fi
end_time=$(date +%s)
if is_mac; then
formatted_start_time=$(date -r "${start_time}" +"%Y-%m-%dT%H-%M-%S")
formatted_end_time=$(date -r "${end_time}" +"%Y-%m-%dT%H-%M-%S")
else
formatted_start_time=$(date "-d@${start_time}" +"%Y-%m-%dT%H-%M-%S")
formatted_end_time=$(date "-d@${end_time}" +"%Y-%m-%dT%H-%M-%S")
fi
if [[ "$command" != "open" ]]; then
echo "Recording stats to ${cypress_run_file}"
echo "${success},$(( end_time - start_time )),${formatted_start_time},${formatted_end_time},${frontend_url}" >>"$cypress_run_file"
fi
done
echo "Recorded stats to ${cypress_run_file}"