name: E2E on: [push, pull_request] jobs: cypress: name: Cypress runs-on: ubuntu-18.04 strategy: fail-fast: false matrix: browser: ['chrome'] env: FLASK_ENV: development SUPERSET_CONFIG: tests.superset_test_config SUPERSET__SQLALCHEMY_DATABASE_URI: postgresql+psycopg2://superset:superset@127.0.0.1:15432/superset PYTHONPATH: ${{ github.workspace }} REDIS_PORT: 16379 CI: github-actions GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} services: postgres: image: postgres:10-alpine env: POSTGRES_USER: superset POSTGRES_PASSWORD: superset ports: - 15432:5432 redis: image: redis:5-alpine ports: - 16379:6379 steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v1 with: python-version: '3.6' - name: Install dependencies uses: apache-superset/cached-dependencies@ddf7d7f with: # Run commands in parallel does help initial installation without cache parallel: true run: | npm-install && npm-build pip-install && setup-postgres && testdata cypress-install - name: Cypress run all env: CYPRESS_GROUP: Default CYPRESS_PATH: 'cypress/integration/*/*' run: | # Start Flask and run Cypress # --no-debugger means disable the interactive debugger on the 500 page # so errors can print to stderr. flask run --no-debugger --with-threads -p 8081 & sleep 3 # wait for the Flask app to start cd ${{ github.workspace }}/superset-frontend/cypress-base/ npm run cypress -- run --browser ${{ matrix.browser }} --spec "${{ env.CYPRESS_PATH }}" --record false - name: Cypress run SQL Lab (with backend persist) env: SUPERSET_CONFIG: tests.superset_test_config_sqllab_backend_persist CYPRESS_GROUP: Backend persist CYPRESS_PATH: 'cypress/integration/sqllab/*' run: | # Start Flask with alternative config and run Cypress killall python # exit the running Flask app flask run --no-debugger --with-threads -p 8081 & sleep 3 # wait for the Flask app to start cd ${{ github.workspace }}/superset-frontend/cypress-base/ npm run cypress -- run --browser ${{ matrix.browser }} --spec "${{ env.CYPRESS_PATH }}" --record false