]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/run-frontend-e2e-tests.sh
import 15.2.0 Octopus source
[ceph.git] / ceph / src / pybind / mgr / dashboard / run-frontend-e2e-tests.sh
index 87a1e6b4697b4a9212d931f548ff60177a3b09ec..043e4e00a3cff095772a637094f949fa28e8f3aa 100755 (executable)
@@ -4,7 +4,7 @@ set -e
 
 stop() {
     if [ "$REMOTE" == "false" ]; then
-        cd $BUILD_DIR
+        cd ${FULL_PATH_BUILD_DIR}
         ../src/stop.sh
     fi
     exit $1
@@ -12,16 +12,17 @@ stop() {
 
 BASE_URL=''
 DEVICE=''
+E2E_LOGIN_USER=''
+E2E_LOGIN_PWD=''
 REMOTE='false'
 
-while getopts 'd:r:' flag; do
+while getopts 'd:p:r:u:' flag; do
   case "${flag}" in
     d) DEVICE=$OPTARG;;
+    p) E2E_LOGIN_PWD=$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'"';;
+       BASE_URL=$OPTARG;;
+    u) E2E_LOGIN_USER=$OPTARG;;
   esac
 done
 
@@ -39,8 +40,10 @@ fi
 
 DASH_DIR=`pwd`
 
-cd ../../../../build
-BUILD_DIR=`pwd`
+[ -z "$BUILD_DIR" ] && BUILD_DIR=build
+
+cd ../../../../${BUILD_DIR}
+FULL_PATH_BUILD_DIR=`pwd`
 
 if [ "$BASE_URL" == "" ]; then
     MGR=2 RGW=1 ../src/vstart.sh -n -d
@@ -50,30 +53,33 @@ if [ "$BASE_URL" == "" ]; then
     ./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
-    ./bin/ceph dashboard set-rgw-api-access-key `./bin/radosgw-admin user info --uid=dev | jq .keys[0].access_key | sed -e 's/^"//' -e 's/"$//'`
-    ./bin/ceph dashboard set-rgw-api-secret-key `./bin/radosgw-admin user info --uid=dev | jq .keys[0].secret_key | sed -e 's/^"//' -e 's/"$//'`
+    # Obtain and set access and secret key for the previously created user. $() is safer than backticks `..`
+    ./bin/ceph dashboard set-rgw-api-access-key $(./bin/radosgw-admin user info --uid=dev | jq -r .keys[0].access_key)
+    ./bin/ceph dashboard set-rgw-api-secret-key $(./bin/radosgw-admin user info --uid=dev | jq -r .keys[0].secret_key)
     # Set SSL verify to False
     ./bin/ceph dashboard set-rgw-api-ssl-verify False
 
-    BASE_URL=`./bin/ceph mgr services | jq .dashboard`
+    BASE_URL=$(./bin/ceph mgr services | jq -r .dashboard)
 fi
 
+export BASE_URL E2E_LOGIN_USER E2E_LOGIN_PWD
+
 cd $DASH_DIR/frontend
-jq .[].target=$BASE_URL proxy.conf.json.sample > proxy.conf.json
 
-. $BUILD_DIR/src/pybind/mgr/dashboard/node-env/bin/activate
-npm ci
+[[ "$(command -v npm)" == '' ]] && . ${FULL_PATH_BUILD_DIR}/src/pybind/mgr/dashboard/node-env/bin/activate
 
-if [ $DEVICE == "chrome" ]; then
-    npm run e2e || stop 1
+if [ "$DEVICE" == "chrome" ]; then
+    npm run e2e:ci || stop 1
     stop 0
-elif [ $DEVICE == "docker" ]; then
+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
+    cat <<EOF > .env
+BASE_URL
+E2E_LOGIN_USER
+E2E_LOGIN_PWD
+EOF
+    docker run --rm -v $(pwd):/ceph --env-file .env --name=e2e --network=host --entrypoint "" \
+        docker.io/rhcsdashboard/e2e npm run e2e:ci || failed=1
     stop $failed
 else
     echo "ERROR: Device not recognized. Valid devices are 'chrome' and 'docker'."