#!/usr/bin/env bash set -xeo pipefail . scripts/grafana-server/variables if ((BASH_VERSINFO[0] < 4)); then echo "Bash ver >= 4 is needed to run this script" echo "Please upgrade your bash - run 'brew install bash' if you use Homebrew on MacOS" exit 1; fi HOST=${HOST:-$DEFAULT_HOST} PORT=${PORT:-$DEFAULT_PORT} echo -e "Starting Cypress scenarios" args=("$@") CMD="cypress run --browser=chrome" PARAMS="" CLEANUP="" declare -A env=( [BASE_URL]=${BASE_URL:-"http://$HOST:$PORT"} [SLOWMO]=0 ) testFilesForSingleSuite="*.spec.ts" rootForEnterpriseSuite="./e2e/extensions-suite" rootForScenesSuite="./e2e/scenes" declare -A cypressConfig=( [screenshotsFolder]=./e2e/"${args[0]}"/screenshots [fixturesFolder]=./e2e/cypress/fixtures [videosFolder]=./e2e/"${args[0]}"/videos [downloadsFolder]=./e2e/cypress/downloads [fileServerFolder]=./e2e/cypress [specPattern]=./e2e/*-suite/*spec.ts [defaultCommandTimeout]=30000 [viewportWidth]=1920 [viewportHeight]=1080 [trashAssetsBeforeRuns]=false [reporter]=./e2e/log-reporter.js [baseUrl]=${BASE_URL:-"http://$HOST:$PORT"} ) case "$1" in "debug") echo -e "Debug mode" env[SLOWMO]=1 PARAMS="--no-exit" ;; "dev") echo "Dev mode" CMD="cypress open" ;; "benchmark") echo "Benchmark" PARAMS="--headed --no-runner-ui" env[BENCHMARK_PLUGIN_ENABLED]=true env[BENCHMARK_PLUGIN_RESULTS_FOLDER]=./e2e/benchmarks/"${args[1]}"/results cypressConfig[video]=false cypressConfig[screenshotsFolder]=./e2e/benchmarks/"${args[1]}"/screenshots cypressConfig[specPattern]=./e2e/benchmarks/"${args[1]}"/$testFilesForSingleSuite ;; "enterprise") echo "Enterprise" env[SMTP_PLUGIN_ENABLED]=true CLEANUP="rm -rf ./e2e/extensions-suite" SETUP="cp -Lr ./e2e/extensions ./e2e/extensions-suite" enterpriseSuite=$(basename "${args[1]}") case "$2" in "debug") echo -e "Debug mode" env[SLOWMO]=1 PARAMS="--no-exit" enterpriseSuite=$(basename "${args[2]}") ;; "dev") echo "Dev mode" CMD="cypress open" enterpriseSuite=$(basename "${args[2]}") ;; esac cypressConfig[specPattern]=$rootForEnterpriseSuite/$enterpriseSuite/*-suite/*.spec.ts $CLEANUP && $SETUP ;; "") ;; "scenes") env[SCENES]=true cypressConfig[specPattern]=$rootForScenesSuite/*/$testFilesForSingleSuite cypressConfig[video]=false case "$2" in "debug") echo -e "Debug mode" env[SLOWMO]=1 PARAMS="--no-exit" enterpriseSuite=$(basename "${args[2]}") ;; "dev") echo "Dev mode" CMD="cypress open" enterpriseSuite=$(basename "${args[2]}") ;; esac ;; "scenes/"*) cypressConfig[specPattern]=./e2e/"${args[0]}"/$testFilesForSingleSuite cypressConfig[video]=${args[1]} env[SCENES]=true ;; "enterprise-smtp") env[SMTP_PLUGIN_ENABLED]=true cypressConfig[specPattern]=./e2e/extensions/enterprise/smtp-suite/$testFilesForSingleSuite cypressConfig[video]=${args[1]} ;; *) cypressConfig[specPattern]=./e2e/"${args[0]}"/$testFilesForSingleSuite cypressConfig[video]=${args[1]} ;; esac function join () { local -n map=$1 local delimiter="," local res="" for key in "${!map[@]}" do value=${map[$key]} if [ -z "${res}" ]; then res=$key=$value else res=$res$delimiter$key=$value fi done echo "$res" } export TZ="Pacific/Honolulu" yarn run $CMD --env "$(join env)" \ --config "$(join cypressConfig)" \ $PARAMS $CLEANUP