#!/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" if ./node_modules/.bin/cypress "$command" -c specPattern="cypress/pilot/**/*.cy.{js,jsx,ts,tsx}" --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}"