From ceefaa00bcc03ab4b15cc5f0a43c5dd7955a1aa1 Mon Sep 17 00:00:00 2001 From: Aishwarya-U-R <91450662+Aishwarya-U-R@users.noreply.github.com> Date: Tue, 4 Apr 2023 10:39:40 +0530 Subject: [PATCH] Test: Adding Smoke & Sanity suites into the CI pipeline (#22029) ## Description - This PR introduces smoke & sanity tests into the CI pipeline, to capture the failures early. ## Type of change - CI Improvements ## How Has This Been Tested? - Cypress runs on local PR workflows ## Checklist: ### QA activity: - [X] Added Test Plan Approved label after reviewing all changes --------- Co-authored-by: Saroj --- .github/workflows/ci-sanity.yml | 414 ++++++++++++++++++ .github/workflows/ci-smoke.yml | 414 ++++++++++++++++++ .../Datasources/Airtable_Basic_Spec.ts | 4 +- .../Datasources/ArangoDataSourceStub_spec.js | 4 +- .../Datasources/Arango_Basic_Spec.ts | 2 +- .../AuthenticatedApiDatasource_spec.js | 8 +- .../AuthenticatedApiWithOAuth_spec.ts | 2 +- .../DSAutosaveImprovements_spec.ts | 2 +- .../Datasources/DatasourceForm_spec.js | 4 +- .../ElasticSearchDatasource_spec.js | 4 +- .../Datasources/FirestoreStub_Spec.ts | 2 +- .../Datasources/GoogleSheetsStub_spec.ts | 2 +- .../Datasources/GraphQL_spec.ts | 2 +- .../Datasources/MockDBs_Spec.ts} | 2 +- .../Datasources/MongoDatasource_spec.js | 2 +- .../Datasources/MsSQLDataSourceStub_spec.js | 4 +- .../Datasources/MsSQL_Basic_Spec.ts | 4 +- .../Datasources/MySQLDataSourceStub_spec.js | 4 +- .../Datasources/MySQLNoiseTest_spec.js | 8 +- .../Datasources/MySQL_spec.js | 4 +- .../Datasources/PostgresDatasource_spec.js | 4 +- .../RedshiftDataSourceStub_spec.js | 2 +- .../Datasources/RestApiDatasource_spec.js | 4 +- .../RestApiOAuth2Validation_spec.js | 4 +- .../Datasources/SMTPDatasource_spec.js | 7 +- .../Datasources/Styles_spec.js | 4 +- .../Application/ReconnectDatasource_spec.js | 0 .../FormLogin/EnableFormLogin_spec.js | 4 +- .../Generate_Crud_New_Page_spec.ts | 2 +- 29 files changed, 875 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/ci-sanity.yml create mode 100644 .github/workflows/ci-smoke.yml rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/Airtable_Basic_Spec.ts (98%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/ArangoDataSourceStub_spec.js (92%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/Arango_Basic_Spec.ts (99%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/AuthenticatedApiDatasource_spec.js (89%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/AuthenticatedApiWithOAuth_spec.ts (95%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/DSAutosaveImprovements_spec.ts (97%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/DatasourceForm_spec.js (92%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/ElasticSearchDatasource_spec.js (85%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/FirestoreStub_Spec.ts (89%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/GoogleSheetsStub_spec.ts (93%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/GraphQL_spec.ts (99%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests/Datasources/MockDBs_spec.ts => SanitySuite/Datasources/MockDBs_Spec.ts} (98%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/MongoDatasource_spec.js (90%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/MsSQLDataSourceStub_spec.js (91%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/MsSQL_Basic_Spec.ts (99%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/MySQLDataSourceStub_spec.js (91%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/MySQLNoiseTest_spec.js (89%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/MySQL_spec.js (90%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/PostgresDatasource_spec.js (90%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/RedshiftDataSourceStub_spec.js (95%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/RestApiDatasource_spec.js (86%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/RestApiOAuth2Validation_spec.js (94%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/SMTPDatasource_spec.js (93%) rename app/client/cypress/integration/{Regression_TestSuite/ServerSideTests => SanitySuite}/Datasources/Styles_spec.js (98%) rename app/client/cypress/integration/{Regression_TestSuite => SmokeSuite}/Application/ReconnectDatasource_spec.js (100%) rename app/client/cypress/integration/{Regression_TestSuite/ClientSideTests => SmokeSuite}/FormLogin/EnableFormLogin_spec.js (97%) rename app/client/cypress/integration/{Regression_TestSuite/ClientSideTests => SmokeSuite}/GenerateCRUD/Generate_Crud_New_Page_spec.ts (87%) diff --git a/.github/workflows/ci-sanity.yml b/.github/workflows/ci-sanity.yml new file mode 100644 index 0000000000..40f6a2df15 --- /dev/null +++ b/.github/workflows/ci-sanity.yml @@ -0,0 +1,414 @@ +name: Appsmith CI Test Sanity Workflow + +on: + # This line enables manual triggering of this workflow. + workflow_dispatch: + workflow_call: + inputs: + pr: + description: "This is the PR number in case the workflow is being called in a pull request" + required: false + type: number + +jobs: + ci-test: + runs-on: ubuntu-latest + if: | + github.event.pull_request.head.repo.full_name == github.repository || + github.event_name == 'push' || + github.event_name == 'workflow_dispatch' || + github.event_name == 'repository_dispatch' + defaults: + run: + shell: bash + + # Service containers to run with this job. Required for running tests + services: + # Label used to access the service container + redis: + # Docker Hub image for Redis + image: redis + ports: + # Opens tcp port 6379 on the host and service container + - 6379:6379 + mongo: + image: mongo + ports: + - 27017:27017 + + steps: + - name: Set up Depot CLI + uses: depot/setup-action@v1 + + # Check out merge commit + - name: Fork based /ok-to-test checkout + if: inputs.pr != 0 + uses: actions/checkout@v3 + with: + fetch-depth: 0 + ref: "refs/pull/${{ inputs.pr }}/merge" + + # Checkout the code in the current branch in case the workflow is called because of a branch push event + - name: Checkout the head commit of the branch + if: inputs.pr == 0 + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Timestamp will be used to create cache key + - id: timestamp + run: echo "timestamp=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_OUTPUT + + # In case this is second attempt try restoring status of the prior attempt from cache + - name: Restore the previous run result + id: cache-appsmith + uses: martijnhols/actions-cache@v3.0.2 + with: + path: | + ~/run_result_sanity + key: ${{ github.run_id }}-sanity-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-sanity-${{ github.job }} + + - name: Get the previous run result + if: steps.cache-appsmith.outputs.cache-hit == 'true' + id: run_result + run: | + run_result_env=$(cat ~/run_result_sanity) + echo "run_result=$run_result_env" >> $GITHUB_OUTPUT + + - name: Dump steps context + env: + STEPS_CONTEXT: ${{ toJson(steps) }} + run: echo "$STEPS_CONTEXT" + + # In case this is second attempt try restoring failed tests + - name: Restore the previous failed combine result + if: steps.run_result.outputs.run_result == 'failedtest' + uses: martijnhols/actions-cache/restore@v3 + with: + path: | + ~/failed_spec_ci_sanity + key: ${{ github.run_id }}-failed_spec_ci_sanity-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-failed_spec_ci_sanity-${{ github.job }} + + # failed_spec_env will contain list of all failed specs + # We are using environment variable instead of regular to support multiline + - name: Get failed_spec + if: steps.run_result.outputs.run_result == 'failedtest' + run: | + failed_spec_env=$(cat ~/failed_spec_ci_sanity) + echo "failed_spec_env<> $GITHUB_ENV + echo "$failed_spec_env" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + + - if: steps.run_result.outputs.run_result != 'success' && steps.run_result.outputs.run_result != 'failedtest' + run: echo "Starting full run" && exit 0 + + - if: steps.run_result.outputs.run_result == 'failedtest' + run: echo "Rerunning failed tests" && exit 0 + + - name: cat run_result + run: echo ${{ steps.run_result.outputs.run_result }} + + - name: Download Docker image artifact + uses: actions/download-artifact@v3 + with: + name: cicontainer + + - name: Load Docker image from tar file + run: | + gunzip cicontainer.tar.gz + docker load -i cicontainer.tar + + - name: Create folder + if: steps.run_result.outputs.run_result != 'success' + env: + APPSMITH_LICENSE_KEY: ${{ secrets.APPSMITH_LICENSE_KEY }} + working-directory: "." + run: | + mkdir -p cicontainerlocal/stacks/configuration/ + + - name: Run Appsmith & TED docker image + if: steps.run_result.outputs.run_result != 'success' + env: + APPSMITH_LICENSE_KEY: ${{ secrets.APPSMITH_LICENSE_KEY }} + working-directory: "." + run: | + sudo /etc/init.d/ssh stop ; + mkdir -p ~/git-server/keys + mkdir -p ~/git-server/repos + docker run --name test-event-driver -d -p 22:22 -p 5001:5001 -p 3306:3306 \ + -p 5432:5432 -p 28017:27017 -p 25:25 -p 5000:5000 -p 3001:3000 -p 6001:6001 --privileged --pid=host --ipc=host --volume /:/host -v ~/git-server/keys:/git-server/keys \ + -v ~/git-server/repos:/git-server/repos appsmith/test-event-driver:latest + cd cicontainerlocal + docker run -d --name appsmith -p 80:80 -p 9001:9001 \ + -v "$PWD/stacks:/appsmith-stacks" -e APPSMITH_LICENSE_KEY=$APPSMITH_LICENSE_KEY \ + -e APPSMITH_DISABLE_TELEMETRY=true \ + -e APPSMITH_CLOUD_SERVICES_BASE_URL=http://host.docker.internal:5001 \ + --add-host=host.docker.internal:host-gateway --add-host=api.segment.io:host-gateway --add-host=t.appsmith.com:host-gateway \ + cicontainer + + - name: Setup MSSQL & Arango docker containers + working-directory : app/client/cypress + run : | + docker run --name=mssqldb -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Root@123" -p 1433:1433 -d mcr.microsoft.com/azure-sql-edge + docker run --name arangodb -e ARANGO_USERNAME=root -e ARANGO_ROOT_PASSWORD=Arango -p 8529:8529 -d arangodb + # docker exec -i mssqldb /bin/bash -c "echo -e '[mysqld]\ntcpport=1433\ntcpnodelay=1' >> /var/opt/mssql/mssql.conf" + # docker restart mssqldb + # sudo ufw allow 1433/tcp + # docker cp init-mssql-dump-for-test.sql mssqldb:var/init-mssql-dump-for-test.sql + # docker exec -i mssqldb /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Root@123 -i /var/init-mssql-dump-for-test.sql + + - name: Use Node.js 16.14.0 + if: steps.run_result.outputs.run_result != 'success' + uses: actions/setup-node@v3 + with: + node-version: "16.14.0" + + # Install all the dependencies + - name: Install dependencies + if: steps.run_result.outputs.run_result != 'success' + run: | + cd app/client + yarn install \ + --cwd cypress \ + --modules-folder ../node_modules + + - name: Setting up the cypress tests + if: steps.run_result.outputs.run_result != 'success' + shell: bash + env: + APPSMITH_SSL_CERTIFICATE: ${{ secrets.APPSMITH_SSL_CERTIFICATE }} + APPSMITH_SSL_KEY: ${{ secrets.APPSMITH_SSL_KEY }} + CYPRESS_URL: ${{ secrets.CYPRESS_URL }} + CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }} + CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }} + CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }} + CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }} + CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }} + CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }} + CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }} + CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }} + CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }} + CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }} + CYPRESS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + CYPRESS_AIRTABLE_BEARER: ${{ secrets.AIRTABLE_BEARER }} + CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }} + CYPRESS_TEST_GITHUB_USER_NAME: ${{ secrets.CYPRESS_TEST_GITHUB_USER_NAME }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET }} + CYPRESS_OAUTH_SAML_EMAIL: ${{ secrets.CYPRESS_OAUTH_SAML_EMAIL }} + CYPRESS_OAUTH_SAML_ENTITY_ID: ${{ secrets.CYPRESS_OAUTH_SAML_ENTITY_ID }} + CYPRESS_OAUTH_SAML_METADATA_URL: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_URL }} + CYPRESS_OAUTH_SAML_METADATA_XML: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_XML }} + CYPRESS_OAUTH_SAML_PUB_CERT: ${{ secrets.CYPRESS_OAUTH_SAML_PUB_CERT }} + CYPRESS_OAUTH_SAML_SSO_URL: ${{ secrets.CYPRESS_OAUTH_SAML_SSO_URL }} + CYPRESS_OAUTH_SAML_REDIRECT_URL: ${{ secrets.CYPRESS_OAUTH_SAML_REDIRECT_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO }} + CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL }} + APPSMITH_DISABLE_TELEMETRY: true + APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }} + POSTGRES_PASSWORD: postgres + run: | + cd app/client + chmod a+x ./cypress/setup-test-ci.sh + ./cypress/setup-test-ci.sh + + - uses: browser-actions/setup-chrome@latest + with: + chrome-version: stable + - run: | + echo "BROWSER_PATH=$(which chrome)" >> $GITHUB_ENV + + - name: Run the cypress test + if: steps.run_result.outputs.run_result != 'success' && steps.run_result.outputs.run_result != 'failedtest' + uses: cypress-io/github-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} + CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }} + CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }} + CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }} + CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }} + CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }} + CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }} + CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }} + CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }} + CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }} + CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }} + CYPRESS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + CYPRESS_AIRTABLE_BEARER: ${{ secrets.AIRTABLE_BEARER }} + CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }} + CYPRESS_TEST_GITHUB_USER_NAME: ${{ secrets.CYPRESS_TEST_GITHUB_USER_NAME }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET }} + CYPRESS_OAUTH_SAML_EMAIL: ${{ secrets.CYPRESS_OAUTH_SAML_EMAIL }} + CYPRESS_OAUTH_SAML_ENTITY_ID: ${{ secrets.CYPRESS_OAUTH_SAML_ENTITY_ID }} + CYPRESS_OAUTH_SAML_METADATA_URL: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_URL }} + CYPRESS_OAUTH_SAML_METADATA_XML: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_XML }} + CYPRESS_OAUTH_SAML_PUB_CERT: ${{ secrets.CYPRESS_OAUTH_SAML_PUB_CERT }} + CYPRESS_OAUTH_SAML_SSO_URL: ${{ secrets.CYPRESS_OAUTH_SAML_SSO_URL }} + CYPRESS_OAUTH_SAML_REDIRECT_URL: ${{ secrets.CYPRESS_OAUTH_SAML_REDIRECT_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO }} + CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL }} + APPSMITH_DISABLE_TELEMETRY: true + APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }} + COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} + with: + browser: ${{ env.BROWSER_PATH }} + headless: true + record: true + install: false + parallel: true + config-file: cypress_ci.json + group: "Electrons on Github Action Fat Container" + spec: "cypress/integration/SanitySuite/**/*" + working-directory: app/client + # tag will be either "push" or "pull_request" + tag: ${{ github.event_name }} + env: "NODE_ENV=development" + + # In case of second attempt only run failed specs + - name: Run the cypress test with failed tests + if: steps.run_result.outputs.run_result == 'failedtest' + uses: cypress-io/github-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} + CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }} + CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }} + CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }} + CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }} + CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }} + CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }} + CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }} + CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }} + CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }} + CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }} + CYPRESS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + CYPRESS_AIRTABLE_BEARER: ${{ secrets.AIRTABLE_BEARER }} + CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }} + CYPRESS_TEST_GITHUB_USER_NAME: ${{ secrets.CYPRESS_TEST_GITHUB_USER_NAME }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET }} + CYPRESS_OAUTH_SAML_EMAIL: ${{ secrets.CYPRESS_OAUTH_SAML_EMAIL }} + CYPRESS_OAUTH_SAML_ENTITY_ID: ${{ secrets.CYPRESS_OAUTH_SAML_ENTITY_ID }} + CYPRESS_OAUTH_SAML_METADATA_URL: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_URL }} + CYPRESS_OAUTH_SAML_METADATA_XML: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_XML }} + CYPRESS_OAUTH_SAML_PUB_CERT: ${{ secrets.CYPRESS_OAUTH_SAML_PUB_CERT }} + CYPRESS_OAUTH_SAML_SSO_URL: ${{ secrets.CYPRESS_OAUTH_SAML_SSO_URL }} + CYPRESS_OAUTH_SAML_REDIRECT_URL: ${{ secrets.CYPRESS_OAUTH_SAML_REDIRECT_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO }} + CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL }} + APPSMITH_DISABLE_TELEMETRY: true + APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }} + COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} + with: + browser: ${{ env.BROWSER_PATH }} + headless: true + record: true + install: false + parallel: true + config-file: cypress_ci.json + group: "Electrons on Github Action Fat Container" + spec: ${{ env.failed_spec_env }} + working-directory: app/client + # tag will be either "push" or "pull_request" + tag: ${{ github.event_name }} + env: "NODE_ENV=development" + + - name: Collect CI container logs + if: failure() + working-directory: "." + run: | + docker logs appsmith 2>&1 > ~/dockerlogs-sanity.txt + + # Upload docker logs + - name: Upload failed test list artifact + if: failure() + uses: actions/upload-artifact@v3 + with: + name: dockerlogs-sanity-${{ matrix.job }} + path: ~/dockerlogs-sanity.txt + + # Set status = failedtest + - name: Set fail if there are test failures + if: failure() + run: echo "failedtest" >> $GITHUB_OUTPUT > ~/run_result + + # add list failed tests to a file + - name: In case of test failures copy them to a file + if: failure() + run: | + cd ${{ github.workspace }}/app/client/cypress/ + find screenshots -type f \( -iname "*\(attempt 2\).png" -o -iname "*before all hook*" -o -iname "*after all hook*" \) | sed 's/screenshots/cypress\/integration/g'| sed 's:/[^/]*$::' | sort -u > ~/failed_spec_ci_sanity + + # Upload failed test list using common path for all matrix job + - name: Upload failed test list artifact + if: always() + uses: actions/upload-artifact@v3 + with: + name: failed_spec_ci_sanity + path: ~/failed_spec_ci_sanity + + # Force store previous run result to cache + - name: Store the previous run result + if: failure() + uses: martijnhols/actions-cache/save@v3 + with: + path: | + ~/run_result_sanity + key: ${{ github.run_id }}-sanity-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-sanity-${{ github.job }} + + # Force store previous failed test list to cache + - name: Store the previous failed test result + if: failure() + uses: martijnhols/actions-cache/save@v3 + with: + path: | + ~/failed_spec_ci_sanity + key: ${{ github.run_id }}-failed_spec_ci_sanity-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-failed_spec_ci_sanity-${{ github.job }} + + # Upload the log artifact so that it can be used by the test & deploy job in the workflow + - name: Upload server logs bundle on failure + uses: actions/upload-artifact@v3 + if: failure() + with: + name: server-logs-${{ matrix.job }} + path: app/server/server-logs.log + + # Set status = success + - name: Save the status of the run + run: echo "run_result=success" >> $GITHUB_OUTPUT > ~/run_result diff --git a/.github/workflows/ci-smoke.yml b/.github/workflows/ci-smoke.yml new file mode 100644 index 0000000000..eaad99e404 --- /dev/null +++ b/.github/workflows/ci-smoke.yml @@ -0,0 +1,414 @@ +name: Appsmith CI Test Smoke Workflow + +on: + # This line enables manual triggering of this workflow. + workflow_dispatch: + workflow_call: + inputs: + pr: + description: "This is the PR number in case the workflow is being called in a pull request" + required: false + type: number + +jobs: + ci-test: + runs-on: ubuntu-latest + if: | + github.event.pull_request.head.repo.full_name == github.repository || + github.event_name == 'push' || + github.event_name == 'workflow_dispatch' || + github.event_name == 'repository_dispatch' + defaults: + run: + shell: bash + + # Service containers to run with this job. Required for running tests + services: + # Label used to access the service container + redis: + # Docker Hub image for Redis + image: redis + ports: + # Opens tcp port 6379 on the host and service container + - 6379:6379 + mongo: + image: mongo + ports: + - 27017:27017 + + steps: + - name: Set up Depot CLI + uses: depot/setup-action@v1 + + # Check out merge commit + - name: Fork based /ok-to-test checkout + if: inputs.pr != 0 + uses: actions/checkout@v3 + with: + fetch-depth: 0 + ref: "refs/pull/${{ inputs.pr }}/merge" + + # Checkout the code in the current branch in case the workflow is called because of a branch push event + - name: Checkout the head commit of the branch + if: inputs.pr == 0 + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Timestamp will be used to create cache key + - id: timestamp + run: echo "timestamp=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_OUTPUT + + # In case this is second attempt try restoring status of the prior attempt from cache + - name: Restore the previous run result + id: cache-appsmith + uses: martijnhols/actions-cache@v3.0.2 + with: + path: | + ~/run_result_smoke + key: ${{ github.run_id }}-smoke-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-smoke-${{ github.job }} + + - name: Get the previous run result + if: steps.cache-appsmith.outputs.cache-hit == 'true' + id: run_result + run: | + run_result_env=$(cat ~/run_result_smoke) + echo "run_result=$run_result_env" >> $GITHUB_OUTPUT + + - name: Dump steps context + env: + STEPS_CONTEXT: ${{ toJson(steps) }} + run: echo "$STEPS_CONTEXT" + + # In case this is second attempt try restoring failed tests + - name: Restore the previous failed combine result + if: steps.run_result.outputs.run_result == 'failedtest' + uses: martijnhols/actions-cache/restore@v3 + with: + path: | + ~/failed_spec_ci_smoke + key: ${{ github.run_id }}-failed_spec_ci_smoke-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-failed_spec_ci_smoke-${{ github.job }} + + # failed_spec_env will contain list of all failed specs + # We are using environment variable instead of regular to support multiline + - name: Get failed_spec + if: steps.run_result.outputs.run_result == 'failedtest' + run: | + failed_spec_env=$(cat ~/failed_spec_ci_smoke) + echo "failed_spec_env<> $GITHUB_ENV + echo "$failed_spec_env" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + + - if: steps.run_result.outputs.run_result != 'success' && steps.run_result.outputs.run_result != 'failedtest' + run: echo "Starting full run" && exit 0 + + - if: steps.run_result.outputs.run_result == 'failedtest' + run: echo "Rerunning failed tests" && exit 0 + + - name: cat run_result + run: echo ${{ steps.run_result.outputs.run_result }} + + - name: Download Docker image artifact + uses: actions/download-artifact@v3 + with: + name: cicontainer + + - name: Load Docker image from tar file + run: | + gunzip cicontainer.tar.gz + docker load -i cicontainer.tar + + - name: Create folder + if: steps.run_result.outputs.run_result != 'success' + env: + APPSMITH_LICENSE_KEY: ${{ secrets.APPSMITH_LICENSE_KEY }} + working-directory: "." + run: | + mkdir -p cicontainerlocal/stacks/configuration/ + + - name: Run Appsmith & TED docker image + if: steps.run_result.outputs.run_result != 'success' + env: + APPSMITH_LICENSE_KEY: ${{ secrets.APPSMITH_LICENSE_KEY }} + working-directory: "." + run: | + sudo /etc/init.d/ssh stop ; + mkdir -p ~/git-server/keys + mkdir -p ~/git-server/repos + docker run --name test-event-driver -d -p 22:22 -p 5001:5001 -p 3306:3306 \ + -p 5432:5432 -p 28017:27017 -p 25:25 -p 5000:5000 -p 3001:3000 -p 6001:6001 --privileged --pid=host --ipc=host --volume /:/host -v ~/git-server/keys:/git-server/keys \ + -v ~/git-server/repos:/git-server/repos appsmith/test-event-driver:latest + cd cicontainerlocal + docker run -d --name appsmith -p 80:80 -p 9001:9001 \ + -v "$PWD/stacks:/appsmith-stacks" -e APPSMITH_LICENSE_KEY=$APPSMITH_LICENSE_KEY \ + -e APPSMITH_DISABLE_TELEMETRY=true \ + -e APPSMITH_CLOUD_SERVICES_BASE_URL=http://host.docker.internal:5001 \ + --add-host=host.docker.internal:host-gateway --add-host=api.segment.io:host-gateway --add-host=t.appsmith.com:host-gateway \ + cicontainer + + - name: Setup MSSQL & Arango docker containers + working-directory : app/client/cypress + run : | + docker run --name=mssqldb -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Root@123" -p 1433:1433 -d mcr.microsoft.com/azure-sql-edge + docker run --name arangodb -e ARANGO_USERNAME=root -e ARANGO_ROOT_PASSWORD=Arango -p 8529:8529 -d arangodb + # docker exec -i mssqldb /bin/bash -c "echo -e '[mysqld]\ntcpport=1433\ntcpnodelay=1' >> /var/opt/mssql/mssql.conf" + # docker restart mssqldb + # sudo ufw allow 1433/tcp + # docker cp init-mssql-dump-for-test.sql mssqldb:var/init-mssql-dump-for-test.sql + # docker exec -i mssqldb /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Root@123 -i /var/init-mssql-dump-for-test.sql + + - name: Use Node.js 16.14.0 + if: steps.run_result.outputs.run_result != 'success' + uses: actions/setup-node@v3 + with: + node-version: "16.14.0" + + # Install all the dependencies + - name: Install dependencies + if: steps.run_result.outputs.run_result != 'success' + run: | + cd app/client + yarn install \ + --cwd cypress \ + --modules-folder ../node_modules + + - name: Setting up the cypress tests + if: steps.run_result.outputs.run_result != 'success' + shell: bash + env: + APPSMITH_SSL_CERTIFICATE: ${{ secrets.APPSMITH_SSL_CERTIFICATE }} + APPSMITH_SSL_KEY: ${{ secrets.APPSMITH_SSL_KEY }} + CYPRESS_URL: ${{ secrets.CYPRESS_URL }} + CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }} + CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }} + CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }} + CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }} + CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }} + CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }} + CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }} + CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }} + CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }} + CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }} + CYPRESS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + CYPRESS_AIRTABLE_BEARER: ${{ secrets.AIRTABLE_BEARER }} + CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }} + CYPRESS_TEST_GITHUB_USER_NAME: ${{ secrets.CYPRESS_TEST_GITHUB_USER_NAME }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET }} + CYPRESS_OAUTH_SAML_EMAIL: ${{ secrets.CYPRESS_OAUTH_SAML_EMAIL }} + CYPRESS_OAUTH_SAML_ENTITY_ID: ${{ secrets.CYPRESS_OAUTH_SAML_ENTITY_ID }} + CYPRESS_OAUTH_SAML_METADATA_URL: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_URL }} + CYPRESS_OAUTH_SAML_METADATA_XML: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_XML }} + CYPRESS_OAUTH_SAML_PUB_CERT: ${{ secrets.CYPRESS_OAUTH_SAML_PUB_CERT }} + CYPRESS_OAUTH_SAML_SSO_URL: ${{ secrets.CYPRESS_OAUTH_SAML_SSO_URL }} + CYPRESS_OAUTH_SAML_REDIRECT_URL: ${{ secrets.CYPRESS_OAUTH_SAML_REDIRECT_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO }} + CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL }} + APPSMITH_DISABLE_TELEMETRY: true + APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }} + POSTGRES_PASSWORD: postgres + run: | + cd app/client + chmod a+x ./cypress/setup-test-ci.sh + ./cypress/setup-test-ci.sh + + - uses: browser-actions/setup-chrome@latest + with: + chrome-version: stable + - run: | + echo "BROWSER_PATH=$(which chrome)" >> $GITHUB_ENV + + - name: Run the cypress test + if: steps.run_result.outputs.run_result != 'success' && steps.run_result.outputs.run_result != 'failedtest' + uses: cypress-io/github-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} + CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }} + CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }} + CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }} + CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }} + CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }} + CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }} + CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }} + CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }} + CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }} + CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }} + CYPRESS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + CYPRESS_AIRTABLE_BEARER: ${{ secrets.AIRTABLE_BEARER }} + CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }} + CYPRESS_TEST_GITHUB_USER_NAME: ${{ secrets.CYPRESS_TEST_GITHUB_USER_NAME }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET }} + CYPRESS_OAUTH_SAML_EMAIL: ${{ secrets.CYPRESS_OAUTH_SAML_EMAIL }} + CYPRESS_OAUTH_SAML_ENTITY_ID: ${{ secrets.CYPRESS_OAUTH_SAML_ENTITY_ID }} + CYPRESS_OAUTH_SAML_METADATA_URL: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_URL }} + CYPRESS_OAUTH_SAML_METADATA_XML: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_XML }} + CYPRESS_OAUTH_SAML_PUB_CERT: ${{ secrets.CYPRESS_OAUTH_SAML_PUB_CERT }} + CYPRESS_OAUTH_SAML_SSO_URL: ${{ secrets.CYPRESS_OAUTH_SAML_SSO_URL }} + CYPRESS_OAUTH_SAML_REDIRECT_URL: ${{ secrets.CYPRESS_OAUTH_SAML_REDIRECT_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO }} + CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL }} + APPSMITH_DISABLE_TELEMETRY: true + APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }} + COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} + with: + browser: ${{ env.BROWSER_PATH }} + headless: true + record: true + install: false + parallel: true + config-file: cypress_ci.json + group: "Electrons on Github Action Fat Container" + spec: "cypress/integration/SmokeSuite/**/*" + working-directory: app/client + # tag will be either "push" or "pull_request" + tag: ${{ github.event_name }} + env: "NODE_ENV=development" + + # In case of second attempt only run failed specs + - name: Run the cypress test with failed tests + if: steps.run_result.outputs.run_result == 'failedtest' + uses: cypress-io/github-action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} + CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} + CYPRESS_USERNAME: ${{ secrets.CYPRESS_USERNAME }} + CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }} + CYPRESS_TESTUSERNAME1: ${{ secrets.CYPRESS_TESTUSERNAME1 }} + CYPRESS_TESTPASSWORD1: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME2: ${{ secrets.CYPRESS_TESTUSERNAME2 }} + CYPRESS_TESTPASSWORD2: ${{ secrets.CYPRESS_TESTPASSWORD1 }} + CYPRESS_TESTUSERNAME3: ${{ secrets.CYPRESS_TESTUSERNAME3 }} + CYPRESS_TESTPASSWORD3: ${{ secrets.CYPRESS_TESTPASSWORD3 }} + CYPRESS_TESTUSERNAME4: ${{ secrets.CYPRESS_TESTUSERNAME4 }} + CYPRESS_TESTPASSWORD4: ${{ secrets.CYPRESS_TESTPASSWORD4 }} + CYPRESS_S3_ACCESS_KEY: ${{ secrets.CYPRESS_S3_ACCESS_KEY }} + CYPRESS_S3_SECRET_KEY: ${{ secrets.CYPRESS_S3_SECRET_KEY }} + CYPRESS_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + CYPRESS_AIRTABLE_BEARER: ${{ secrets.AIRTABLE_BEARER }} + CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.CYPRESS_GITHUB_PERSONAL_ACCESS_TOKEN }} + CYPRESS_TEST_GITHUB_USER_NAME: ${{ secrets.CYPRESS_TEST_GITHUB_USER_NAME }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET }} + CYPRESS_OAUTH_SAML_EMAIL: ${{ secrets.CYPRESS_OAUTH_SAML_EMAIL }} + CYPRESS_OAUTH_SAML_ENTITY_ID: ${{ secrets.CYPRESS_OAUTH_SAML_ENTITY_ID }} + CYPRESS_OAUTH_SAML_METADATA_URL: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_URL }} + CYPRESS_OAUTH_SAML_METADATA_XML: ${{ secrets.CYPRESS_OAUTH_SAML_METADATA_XML }} + CYPRESS_OAUTH_SAML_PUB_CERT: ${{ secrets.CYPRESS_OAUTH_SAML_PUB_CERT }} + CYPRESS_OAUTH_SAML_SSO_URL: ${{ secrets.CYPRESS_OAUTH_SAML_SSO_URL }} + CYPRESS_OAUTH_SAML_REDIRECT_URL: ${{ secrets.CYPRESS_OAUTH_SAML_REDIRECT_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_ID }} + CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_CLIENT_SECRET }} + CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_AUTH_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_TOKEN_URL }} + CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_USER_INFO }} + CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL: ${{ secrets.CYPRESS_APPSMITH_OAUTH2_OIDC_JWKS_URL }} + APPSMITH_DISABLE_TELEMETRY: true + APPSMITH_GOOGLE_MAPS_API_KEY: ${{ secrets.APPSMITH_GOOGLE_MAPS_API_KEY }} + COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} + with: + browser: ${{ env.BROWSER_PATH }} + headless: true + record: true + install: false + parallel: true + config-file: cypress_ci.json + group: "Electrons on Github Action Fat Container" + spec: ${{ env.failed_spec_env }} + working-directory: app/client + # tag will be either "push" or "pull_request" + tag: ${{ github.event_name }} + env: "NODE_ENV=development" + + - name: Collect CI container logs + if: failure() + working-directory: "." + run: | + docker logs appsmith 2>&1 > ~/dockerlogs-smoke.txt + + # Upload docker logs + - name: Upload failed test list artifact + if: failure() + uses: actions/upload-artifact@v3 + with: + name: dockerlogs-smoke-${{ matrix.job }} + path: ~/dockerlogs-smoke.txt + + # Set status = failedtest + - name: Set fail if there are test failures + if: failure() + run: echo "failedtest" >> $GITHUB_OUTPUT > ~/run_result_smoke + + # add list failed tests to a file + - name: In case of test failures copy them to a file + if: failure() + run: | + cd ${{ github.workspace }}/app/client/cypress/ + find screenshots -type f \( -iname "*\(attempt 2\).png" -o -iname "*before all hook*" -o -iname "*after all hook*" \) | sed 's/screenshots/cypress\/integration/g'| sed 's:/[^/]*$::' | sort -u > ~/failed_spec_ci_smoke + + # Upload failed test list using common path for all matrix job + - name: Upload failed test list artifact + if: always() + uses: actions/upload-artifact@v3 + with: + name: failed_spec_ci_smoke + path: ~/failed_spec_ci_smoke + + # Force store previous run result to cache + - name: Store the previous run result + if: failure() + uses: martijnhols/actions-cache/save@v3 + with: + path: | + ~/run_result_smoke + key: ${{ github.run_id }}-smoke-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-smoke-${{ github.job }} + + # Force store previous failed test list to cache + - name: Store the previous failed test result + if: failure() + uses: martijnhols/actions-cache/save@v3 + with: + path: | + ~/failed_spec_ci_smoke + key: ${{ github.run_id }}-failed_spec_ci_smoke-${{ github.job }} + restore-keys: | + ${{ github.run_id }}-failed_spec_ci_smoke-${{ github.job }} + + # Upload the log artifact so that it can be used by the test & deploy job in the workflow + - name: Upload server logs bundle on failure + uses: actions/upload-artifact@v3 + if: failure() + with: + name: server-logs-${{ matrix.job }} + path: app/server/server-logs.log + + # Set status = success + - name: Save the status of the run + run: echo "run_result=success" >> $GITHUB_OUTPUT > ~/run_result diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Airtable_Basic_Spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/Airtable_Basic_Spec.ts similarity index 98% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Airtable_Basic_Spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/Airtable_Basic_Spec.ts index 6387e91173..40429ce978 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Airtable_Basic_Spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/Airtable_Basic_Spec.ts @@ -1,5 +1,5 @@ -import * as _ from "../../../../support/Objects/ObjectsCore"; -import datasourceFormData from "../../../../fixtures/datasources.json"; +import * as _ from "../../../support/Objects/ObjectsCore"; +import datasourceFormData from "../../../fixtures/datasources.json"; let dsName: any, jsonSpecies: any, offset: any, insertedRecordId: any; describe("Validate Airtable Ds", () => { diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/ArangoDataSourceStub_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/ArangoDataSourceStub_spec.js similarity index 92% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/ArangoDataSourceStub_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/ArangoDataSourceStub_spec.js index ff0f49402b..c729b26f75 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/ArangoDataSourceStub_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/ArangoDataSourceStub_spec.js @@ -1,5 +1,5 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const datasource = require("../../../locators/DatasourcesEditor.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let agHelper = ObjectsRegistry.AggregateHelper, dataSources = ObjectsRegistry.DataSources; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Arango_Basic_Spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/Arango_Basic_Spec.ts similarity index 99% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Arango_Basic_Spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/Arango_Basic_Spec.ts index 18a926450c..1ca58936f2 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Arango_Basic_Spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/Arango_Basic_Spec.ts @@ -1,4 +1,4 @@ -import * as _ from "../../../../support/Objects/ObjectsCore"; +import * as _ from "../../../support/Objects/ObjectsCore"; let dsName: any, collectionName = "countries_places_to_visit"; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/AuthenticatedApiDatasource_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/AuthenticatedApiDatasource_spec.js similarity index 89% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/AuthenticatedApiDatasource_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/AuthenticatedApiDatasource_spec.js index 051cf322ac..abc9e9ed8e 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/AuthenticatedApiDatasource_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/AuthenticatedApiDatasource_spec.js @@ -1,7 +1,7 @@ -const apiwidget = require("../../../../locators/apiWidgetslocator.json"); -const datasourceFormData = require("../../../../fixtures/datasources.json"); -const datasourceEditor = require("../../../../locators/DatasourcesEditor.json"); -const testdata = require("../../../../fixtures/testdata.json"); +const apiwidget = require("../../../locators/apiWidgetslocator.json"); +const datasourceFormData = require("../../../fixtures/datasources.json"); +const datasourceEditor = require("../../../locators/DatasourcesEditor.json"); +const testdata = require("../../../fixtures/testdata.json"); import { ObjectsRegistry } from "../../../../support/Objects/Registry"; let dataSources = ObjectsRegistry.DataSources; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/AuthenticatedApiWithOAuth_spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/AuthenticatedApiWithOAuth_spec.ts similarity index 95% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/AuthenticatedApiWithOAuth_spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/AuthenticatedApiWithOAuth_spec.ts index e86e352a1d..6b8aeda386 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/AuthenticatedApiWithOAuth_spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/AuthenticatedApiWithOAuth_spec.ts @@ -1,4 +1,4 @@ -import * as _ from "../../../../support/Objects/ObjectsCore"; +import * as _ from "../../../support/Objects/ObjectsCore"; //import * as _ from "@ObjectsCore"; describe("Authentiacted Api with OAuth 2.O authorization code test cases", function () { diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/DSAutosaveImprovements_spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/DSAutosaveImprovements_spec.ts similarity index 97% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/DSAutosaveImprovements_spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/DSAutosaveImprovements_spec.ts index 1194d73f88..766cd8625f 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/DSAutosaveImprovements_spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/DSAutosaveImprovements_spec.ts @@ -1,4 +1,4 @@ -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +import { ObjectsRegistry } from "../../../support/Objects/Registry"; const agHelper = ObjectsRegistry.AggregateHelper, dataSources = ObjectsRegistry.DataSources; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/DatasourceForm_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/DatasourceForm_spec.js similarity index 92% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/DatasourceForm_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/DatasourceForm_spec.js index f447198959..c678724e03 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/DatasourceForm_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/DatasourceForm_spec.js @@ -1,5 +1,5 @@ -const testdata = require("../../../../fixtures/testdata.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const testdata = require("../../../fixtures/testdata.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let agHelper = ObjectsRegistry.AggregateHelper, dataSource = ObjectsRegistry.DataSources, diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/ElasticSearchDatasource_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/ElasticSearchDatasource_spec.js similarity index 85% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/ElasticSearchDatasource_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/ElasticSearchDatasource_spec.js index d7c972a937..314ca2c7bd 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/ElasticSearchDatasource_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/ElasticSearchDatasource_spec.js @@ -1,5 +1,5 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const datasource = require("../../../locators/DatasourcesEditor.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let elasticSearchName; let dataSource = ObjectsRegistry.DataSources; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/FirestoreStub_Spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/FirestoreStub_Spec.ts similarity index 89% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/FirestoreStub_Spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/FirestoreStub_Spec.ts index b6cf2d902a..39d653076c 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/FirestoreStub_Spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/FirestoreStub_Spec.ts @@ -1,4 +1,4 @@ -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let dataSources = ObjectsRegistry.DataSources, agHelper = ObjectsRegistry.AggregateHelper; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/GoogleSheetsStub_spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/GoogleSheetsStub_spec.ts similarity index 93% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/GoogleSheetsStub_spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/GoogleSheetsStub_spec.ts index 4e5f412771..c78ff8fa04 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/GoogleSheetsStub_spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/GoogleSheetsStub_spec.ts @@ -1,4 +1,4 @@ -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let dataSources = ObjectsRegistry.DataSources, agHelper = ObjectsRegistry.AggregateHelper; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/GraphQL_spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/GraphQL_spec.ts similarity index 99% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/GraphQL_spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/GraphQL_spec.ts index 0e4983549c..8a744ce640 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/GraphQL_spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/GraphQL_spec.ts @@ -1,4 +1,4 @@ -import * as _ from "../../../../support/Objects/ObjectsCore"; +import * as _ from "../../../support/Objects/ObjectsCore"; let appName = ""; let datasourceName = "GraphQL_DS"; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MockDBs_spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/MockDBs_Spec.ts similarity index 98% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MockDBs_spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/MockDBs_Spec.ts index ab62c31733..6cb2fe1db9 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MockDBs_spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/MockDBs_Spec.ts @@ -1,4 +1,4 @@ -import * as _ from "../../../../support/Objects/ObjectsCore"; +import * as _ from "../../../support/Objects/ObjectsCore"; let dsName: any; describe("Validate Mock Query Active Ds querying & count", () => { diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MongoDatasource_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/MongoDatasource_spec.js similarity index 90% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MongoDatasource_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/MongoDatasource_spec.js index 0b7c3d93d3..0938ad6dd1 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MongoDatasource_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/MongoDatasource_spec.js @@ -1,4 +1,4 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); +const datasource = require("../../../locators/DatasourcesEditor.json"); describe("Create, test, save then delete a mongo datasource", function () { beforeEach(() => { diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MsSQLDataSourceStub_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/MsSQLDataSourceStub_spec.js similarity index 91% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MsSQLDataSourceStub_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/MsSQLDataSourceStub_spec.js index f32bb2bb05..11d21666b8 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MsSQLDataSourceStub_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/MsSQLDataSourceStub_spec.js @@ -1,5 +1,5 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const datasource = require("../../../locators/DatasourcesEditor.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let dataSource = ObjectsRegistry.DataSources; let datasourceName; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MsSQL_Basic_Spec.ts b/app/client/cypress/integration/SanitySuite/Datasources/MsSQL_Basic_Spec.ts similarity index 99% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MsSQL_Basic_Spec.ts rename to app/client/cypress/integration/SanitySuite/Datasources/MsSQL_Basic_Spec.ts index e81ea453cb..33f278d9a4 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MsSQL_Basic_Spec.ts +++ b/app/client/cypress/integration/SanitySuite/Datasources/MsSQL_Basic_Spec.ts @@ -1,5 +1,5 @@ -import * as _ from "../../../../support/Objects/ObjectsCore"; -import { Widgets } from "../../../../support/Pages/DataSources"; +import * as _ from "../../../support/Objects/ObjectsCore"; +import { Widgets } from "../../../support/Pages/DataSources"; let dsName: any, query: string; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQLDataSourceStub_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/MySQLDataSourceStub_spec.js similarity index 91% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQLDataSourceStub_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/MySQLDataSourceStub_spec.js index 4ce41b1b21..5ee2a90d09 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQLDataSourceStub_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/MySQLDataSourceStub_spec.js @@ -1,5 +1,5 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const datasource = require("../../../locators/DatasourcesEditor.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let dataSource = ObjectsRegistry.DataSources; let datasourceName; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQLNoiseTest_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/MySQLNoiseTest_spec.js similarity index 89% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQLNoiseTest_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/MySQLNoiseTest_spec.js index 50dfbdd91b..a60525d3d6 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQLNoiseTest_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/MySQLNoiseTest_spec.js @@ -1,7 +1,7 @@ -const queryLocators = require("../../../../locators/QueryEditor.json"); -const datasourceEditor = require("../../../../locators/DatasourcesEditor.json"); -const dsl = require("../../../../fixtures/noiseDsl.json"); -const commonlocators = require("../../../../locators/commonlocators.json"); +const queryLocators = require("../../../locators/QueryEditor.json"); +const datasourceEditor = require("../../../locators/DatasourcesEditor.json"); +const dsl = require("../../../fixtures/noiseDsl.json"); +const commonlocators = require("../../../locators/commonlocators.json"); describe("MySQL noise test", function () { let datasourceName; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQL_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/MySQL_spec.js similarity index 90% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQL_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/MySQL_spec.js index 311df56444..2f1271654b 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/MySQL_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/MySQL_spec.js @@ -1,5 +1,5 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const datasource = require("../../../locators/DatasourcesEditor.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let dataSource = ObjectsRegistry.DataSources; let datasourceName; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/PostgresDatasource_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/PostgresDatasource_spec.js similarity index 90% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/PostgresDatasource_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/PostgresDatasource_spec.js index 88dead88fa..647f408b90 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/PostgresDatasource_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/PostgresDatasource_spec.js @@ -1,5 +1,5 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const datasource = require("../../../locators/DatasourcesEditor.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let dataSource = ObjectsRegistry.DataSources; let datasourceName; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RedshiftDataSourceStub_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/RedshiftDataSourceStub_spec.js similarity index 95% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RedshiftDataSourceStub_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/RedshiftDataSourceStub_spec.js index 7deec46a7a..276ea14052 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RedshiftDataSourceStub_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/RedshiftDataSourceStub_spec.js @@ -1,4 +1,4 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); +const datasource = require("../../../locators/DatasourcesEditor.json"); let datasourceName; describe("Redshift datasource test cases", function () { diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RestApiDatasource_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/RestApiDatasource_spec.js similarity index 86% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RestApiDatasource_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/RestApiDatasource_spec.js index ec96e07d11..fcc807ffa7 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RestApiDatasource_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/RestApiDatasource_spec.js @@ -1,5 +1,5 @@ -const testdata = require("../../../../fixtures/testdata.json"); -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +const testdata = require("../../../fixtures/testdata.json"); +import { ObjectsRegistry } from "../../../support/Objects/Registry"; let agHelper = ObjectsRegistry.AggregateHelper, locator = ObjectsRegistry.CommonLocators; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RestApiOAuth2Validation_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/RestApiOAuth2Validation_spec.js similarity index 94% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RestApiOAuth2Validation_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/RestApiOAuth2Validation_spec.js index c5700cc017..8b5a60019d 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/RestApiOAuth2Validation_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/RestApiOAuth2Validation_spec.js @@ -1,5 +1,5 @@ -const testdata = require("../../../../fixtures/testdata.json"); -const datasource = require("../../../../locators/DatasourcesEditor.json"); +const testdata = require("../../../fixtures/testdata.json"); +const datasource = require("../../../locators/DatasourcesEditor.json"); import { ObjectsRegistry } from "../../../../support/Objects/Registry"; diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/SMTPDatasource_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/SMTPDatasource_spec.js similarity index 93% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/SMTPDatasource_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/SMTPDatasource_spec.js index f577af59f3..126c7f9073 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/SMTPDatasource_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/SMTPDatasource_spec.js @@ -1,7 +1,6 @@ -const datasource = require("../../../../locators/DatasourcesEditor.json"); -const commonlocators = require("../../../../locators/commonlocators.json"); -const queryLocators = require("../../../../locators/QueryEditor.json"); -const dsl = require("../../../../fixtures/SMTPTestdsl.json"); +const datasource = require("../../../locators/DatasourcesEditor.json"); +const queryLocators = require("../../../locators/QueryEditor.json"); +const dsl = require("../../../fixtures/SMTPTestdsl.json"); let datasourceName; describe("SMTP datasource test cases using ted", function () { diff --git a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Styles_spec.js b/app/client/cypress/integration/SanitySuite/Datasources/Styles_spec.js similarity index 98% rename from app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Styles_spec.js rename to app/client/cypress/integration/SanitySuite/Datasources/Styles_spec.js index a8a0d406a1..fce0110670 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ServerSideTests/Datasources/Styles_spec.js +++ b/app/client/cypress/integration/SanitySuite/Datasources/Styles_spec.js @@ -1,5 +1,5 @@ -import HomePage from "../../../../locators/HomePage"; -const pages = require("../../../../locators/Pages.json"); +import HomePage from "../../../locators/HomePage"; +const pages = require("../../../locators/Pages.json"); describe("Validate Datasource Panel Styles", function () { const backgroundColorGray900 = "rgb(25, 25, 25)"; diff --git a/app/client/cypress/integration/Regression_TestSuite/Application/ReconnectDatasource_spec.js b/app/client/cypress/integration/SmokeSuite/Application/ReconnectDatasource_spec.js similarity index 100% rename from app/client/cypress/integration/Regression_TestSuite/Application/ReconnectDatasource_spec.js rename to app/client/cypress/integration/SmokeSuite/Application/ReconnectDatasource_spec.js diff --git a/app/client/cypress/integration/Regression_TestSuite/ClientSideTests/FormLogin/EnableFormLogin_spec.js b/app/client/cypress/integration/SmokeSuite/FormLogin/EnableFormLogin_spec.js similarity index 97% rename from app/client/cypress/integration/Regression_TestSuite/ClientSideTests/FormLogin/EnableFormLogin_spec.js rename to app/client/cypress/integration/SmokeSuite/FormLogin/EnableFormLogin_spec.js index 48e0a4c0ea..30ed9ed6dd 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ClientSideTests/FormLogin/EnableFormLogin_spec.js +++ b/app/client/cypress/integration/SmokeSuite/FormLogin/EnableFormLogin_spec.js @@ -1,5 +1,5 @@ -import adminSettings from "../../../../locators/AdminsSettings"; -import homePage from "../../../../locators/HomePage"; +import adminSettings from "../../../locators/AdminsSettings"; +import homePage from "../../../locators/HomePage"; describe("Form Login test functionality", function () { it("1. Go to admin settings and disable Form Signup", function () { diff --git a/app/client/cypress/integration/Regression_TestSuite/ClientSideTests/GenerateCRUD/Generate_Crud_New_Page_spec.ts b/app/client/cypress/integration/SmokeSuite/GenerateCRUD/Generate_Crud_New_Page_spec.ts similarity index 87% rename from app/client/cypress/integration/Regression_TestSuite/ClientSideTests/GenerateCRUD/Generate_Crud_New_Page_spec.ts rename to app/client/cypress/integration/SmokeSuite/GenerateCRUD/Generate_Crud_New_Page_spec.ts index d94e065a87..3c9dad02bc 100644 --- a/app/client/cypress/integration/Regression_TestSuite/ClientSideTests/GenerateCRUD/Generate_Crud_New_Page_spec.ts +++ b/app/client/cypress/integration/SmokeSuite/GenerateCRUD/Generate_Crud_New_Page_spec.ts @@ -1,4 +1,4 @@ -import { ObjectsRegistry } from "../../../../support/Objects/Registry"; +import { ObjectsRegistry } from "../../../support/Objects/Registry"; const { ApiPage, DataSources, EntityExplorer } = ObjectsRegistry; describe("Validate generate CRUD operation by creating a datasource from generate CRUD form", () => {