diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4e5a860fd3..30da733335 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -672,6 +672,30 @@ CYPRESS_BASE_URL= npm run cypress open See [`superset-frontend/cypress_build.sh`](https://github.com/apache/incubator-superset/blob/master/superset-frontend/cypress_build.sh). +As an alternative you can use docker-compose environment for testing: + +Make sure you have added below line to your /etc/hosts file: +```127.0.0.1 db``` + +If you already have launched Docker environment please use the following command to assure a fresh database instance: +```docker-compose down -v``` + +Launch environment: + +CYPRESS_CONFIG=true docker-compose up + +It will serve backend and frontend on port 8088. + +Run Cypres tests: + +```bash +cd cypress-base +npm install +``` + +# run tests via headless Chrome browser (requires Chrome 64+) +npm run cypress-run-chrome + ### Storybook Superset includes a [Storybook](https://storybook.js.org/) to preview the layout/styling of various Superset components, and variations thereof. To open and view the Storybook: diff --git a/docker-compose.yml b/docker-compose.yml index c58f12f308..0fa2d252dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,6 +24,7 @@ x-superset-volumes: &superset-volumes - ./superset:/app/superset - ./superset-frontend:/app/superset-frontend - superset_home:/app/superset_home + - ./tests:/app/tests version: "3.7" services: @@ -57,6 +58,8 @@ services: user: "root" depends_on: *superset-depends-on volumes: *superset-volumes + environment: + CYPRESS_CONFIG: "${CYPRESS_CONFIG}" superset-init: image: *superset-image @@ -66,6 +69,8 @@ services: depends_on: *superset-depends-on user: "root" volumes: *superset-volumes + environment: + CYPRESS_CONFIG: "${CYPRESS_CONFIG}" superset-node: image: node:12 diff --git a/docker/.env b/docker/.env index 4857d44b38..9594adb8a8 100644 --- a/docker/.env +++ b/docker/.env @@ -42,3 +42,4 @@ REDIS_PORT=6379 FLASK_ENV=development SUPERSET_ENV=development SUPERSET_LOAD_EXAMPLES=yes +CYPRESS_CONFIG=false diff --git a/docker/docker-bootstrap.sh b/docker/docker-bootstrap.sh index c60a6d21f7..f44cf3aa0f 100755 --- a/docker/docker-bootstrap.sh +++ b/docker/docker-bootstrap.sh @@ -19,7 +19,13 @@ set -eo pipefail REQUIREMENTS_LOCAL="/app/docker/requirements-local.txt" - +# If Cypress run – overwrite the password for admin and export env variables +if [ "$CYPRESS_CONFIG" == "true" ]; then + export SUPERSET_CONFIG=tests.superset_test_config + export SUPERSET_TESTENV=true + export ENABLE_REACT_CRUD_VIEWS=true + export SUPERSET__SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://superset:superset@db:5432/superset +fi # # Make sure we have dev requirements installed # diff --git a/docker/docker-init.sh b/docker/docker-init.sh index 124e747f5f..d5ead50398 100755 --- a/docker/docker-init.sh +++ b/docker/docker-init.sh @@ -37,22 +37,29 @@ Init Step ${1}/${STEP_CNT} [${2}] -- ${3} EOF } - +ADMIN_PASSWORD="admin" +# If Cypress run – overwrite the password for admin and export env variables +if [ "$CYPRESS_CONFIG" == "true" ]; then + ADMIN_PASSWORD="general" + export SUPERSET_CONFIG=tests.superset_test_config + export SUPERSET_TESTENV=true + export ENABLE_REACT_CRUD_VIEWS=true + export SUPERSET__SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://superset:superset@db:5432/superset +fi # Initialize the database echo_step "1" "Starting" "Applying DB migrations" superset db upgrade echo_step "1" "Complete" "Applying DB migrations" # Create an admin user -echo_step "2" "Starting" "Setting up admin user ( admin / admin )" +echo_step "2" "Starting" "Setting up admin user ( admin / $ADMIN_PASSWORD )" superset fab create-admin \ --username admin \ --firstname Superset \ --lastname Admin \ --email admin@superset.com \ - --password admin + --password $ADMIN_PASSWORD echo_step "2" "Complete" "Setting up admin user" - # Create default roles and permissions echo_step "3" "Starting" "Setting up roles and perms" superset init @@ -61,6 +68,12 @@ echo_step "3" "Complete" "Setting up roles and perms" if [ "$SUPERSET_LOAD_EXAMPLES" = "yes" ]; then # Load some data to play with echo_step "4" "Starting" "Loading examples" - superset load_examples + # If Cypress run which consumes superset_test_config – load required data for tests + if [ "$CYPRESS_CONFIG" == "true" ]; then + superset load_test_users + superset load_examples --load-test-data + else + superset load_examples + fi echo_step "4" "Complete" "Loading examples" fi