diff options
Diffstat (limited to 'src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh')
-rwxr-xr-x | src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh b/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh new file mode 100755 index 00000000..280debdc --- /dev/null +++ b/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +set -e + +stop() { + if [ "$REMOTE" == "false" ]; then + cd $BUILD_DIR + ../src/stop.sh + fi + exit $1 +} + +BASE_URL='' +DEVICE='' +REMOTE='false' + +while getopts 'd:r:' flag; do + case "${flag}" in + d) DEVICE=$OPTARG;; + r) REMOTE='true' + # jq is expecting a string literal, otherwise it will fail on the url ':'. + # We need to ensure that jq gets a json string for assignment; we achieve + # that by introducing literal double quotes (i.e., '"'). + BASE_URL='"'$OPTARG'"';; + esac +done + +if [ "$DEVICE" == "" ]; then + if [ -x "$(command -v google-chrome)" ] || [ -x "$(command -v google-chrome-stable)" ]; then + DEVICE="chrome" + elif [ -x "$(command -v docker)" ]; then + DEVICE="docker" + else + echo "ERROR: Chrome and Docker not found. You need to install one of \ +them to run the e2e frontend tests." + stop 1 + fi +fi + +DASH_DIR=`pwd` + +cd ../../../../build +BUILD_DIR=`pwd` + +if [ "$BASE_URL" == "" ]; then + MGR=2 RGW=1 ../src/vstart.sh -n -d + sleep 10 + + # Create an Object Gateway User + ./bin/radosgw-admin user create --uid=dev --display-name=Developer --system + # Set the user-id + ./bin/ceph dashboard set-rgw-api-user-id dev + # Obtain and set access and secret key for the previously created user + RGW_ACCESS_KEY_FILE="/tmp/rgw-user-access-key.txt" + printf "$(./bin/radosgw-admin user info --uid=dev | jq -r .keys[0].access_key)" > "${RGW_ACCESS_KEY_FILE}" + ./bin/ceph dashboard set-rgw-api-access-key -i "${RGW_ACCESS_KEY_FILE}" + RGW_SECRET_KEY_FILE="/tmp/rgw-user-secret-key.txt" + printf "$(./bin/radosgw-admin user info --uid=dev | jq -r .keys[0].secret_key)" > "${RGW_SECRET_KEY_FILE}" + ./bin/ceph dashboard set-rgw-api-secret-key -i "${RGW_SECRET_KEY_FILE}" + # Set SSL verify to False + ./bin/ceph dashboard set-rgw-api-ssl-verify False + + BASE_URL=`./bin/ceph mgr services | jq .dashboard` +fi + +cd $DASH_DIR/frontend +jq .[].target=$BASE_URL proxy.conf.json.sample > proxy.conf.json + +[ -z $(command -v npm) ] && . $BUILD_DIR/src/pybind/mgr/dashboard/node-env/bin/activate +npm ci + +if [ $DEVICE == "chrome" ]; then + npm run e2e -- --dev-server-target --baseUrl=$(echo $BASE_URL | tr -d '"') || stop 1 + stop 0 +elif [ $DEVICE == "docker" ]; then + failed=0 + docker run -d -v $(pwd):/workdir --net=host --name angular-e2e-container rogargon/angular-e2e || failed=1 + docker exec angular-e2e-container npm run e2e || failed=1 + docker stop angular-e2e-container + docker rm angular-e2e-container + stop $failed +else + echo "ERROR: Device not recognized. Valid devices are 'chrome' and 'docker'." + stop 1 +fi |