From 7ae87dc06198b00a526cfe3f78e4bae261583936 Mon Sep 17 00:00:00 2001 From: Aman Agarwal Date: Tue, 13 Feb 2024 17:19:13 +0530 Subject: [PATCH] chore: added new test cases for different plugins (#31068) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Added test cases for start with data flow by default. The test cases are added for : - `Postgres` : It should redirect to ds page with schema preview - `Mysql` : It should redirect to ds page with schema preview - `S3` : It should redirect to ds page with config and we can create query on top of it - `Airtable` : It should redirect to ds page with config and we can create query on top of it - `REST API` : It should redirect to action page and the action creation is successful #### PR fixes following issue(s) Fixes #30806 > if no issue exists, please create an issue and ask the maintainers about this first > > #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change > Please delete options that are not relevant. - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [ ] Manual - [ ] JUnit - [ ] Jest - [ ] Cypress > > #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed ## Summary by CodeRabbit - **Tests** - Expanded and refined test descriptions and cases for the "Start with data userflow," focusing on creating and saving data sources for Postgres, MySql, S3, Airtable, and Rest API actions. - **Refactor** - Modified access level of a method in the `ApiPage` class to enhance testability. - **New Features** - Introduced a new property in the `DataSources` class to improve data handling capabilities. --- .../Onboarding/StartFromData_spec.ts | 33 +++++++++++++++++-- app/client/cypress/support/Pages/ApiPage.ts | 2 +- .../cypress/support/Pages/DataSources.ts | 1 + 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/client/cypress/e2e/Regression/ClientSide/Onboarding/StartFromData_spec.ts b/app/client/cypress/e2e/Regression/ClientSide/Onboarding/StartFromData_spec.ts index ada4f3db90..60ac7bc26a 100644 --- a/app/client/cypress/e2e/Regression/ClientSide/Onboarding/StartFromData_spec.ts +++ b/app/client/cypress/e2e/Regression/ClientSide/Onboarding/StartFromData_spec.ts @@ -5,10 +5,11 @@ import { dataSources, homePage, assertHelper, + apiPage, } from "../../../../support/Objects/ObjectsCore"; describe( - "Start with data userflow", + "Start with data userflow : Create different datasources and save", { tags: ["@tag.excludeForAirgap", "@tag.Datasource"] }, function () { beforeEach(() => { @@ -17,6 +18,7 @@ describe( { ab_show_templates_instead_of_blank_canvas_enabled: true, ab_create_new_apps_enabled: true, + ab_start_with_data_default_enabled: true, }, false, ); @@ -25,10 +27,9 @@ describe( homePage.SignUp(`${uid}@appsmithtest.com`, uid as unknown as string); onboarding.closeIntroModal(); }); - agHelper.GetNClick(onboarding.locators.startFromDataCard); }); - it("1. onboarding flow - create datasource and save, it should take me to datasource page with view mode", function () { + it("1. Postgres : should take me to datasource page with view mode", function () { assertHelper.AssertNetworkStatus("@getPlugins"); dataSources.CreateDataSource("Postgres", false); dataSources.selectTabOnDatasourcePage("View data"); @@ -41,5 +42,31 @@ describe( dataSources._dsPageTableTriggermenuTarget("public.users"), ); }); + + it("2. Mysql : should take me to datasource page with view mode", function () { + assertHelper.AssertNetworkStatus("@getPlugins"); + dataSources.CreateDataSource("MySql", false); + dataSources.selectTabOnDatasourcePage("View data"); + assertHelper.AssertNetworkExecutionSuccess("@schemaPreview"); + agHelper.AssertElementExist(dataSources._dsSchemaTableResponse); + }); + + it("3. S3 : should take me to datasource page", function () { + assertHelper.AssertNetworkStatus("@getPlugins"); + dataSources.CreateDataSource("S3", false); + dataSources.CreateQueryAfterDSSaved("", "S3Query"); + }); + + it("4. Airtable : should take me to datasource page", function () { + assertHelper.AssertNetworkStatus("@getPlugins"); + dataSources.CreateDataSource("Airtable", false, false); + dataSources.CreateQueryAfterDSSaved("", "AirtableQuery"); + }); + + it("5. Rest API action : should take me to action page directly", function () { + assertHelper.AssertNetworkStatus("@getPlugins"); + agHelper.GetNClick(apiPage._createapi, 0); + assertHelper.AssertNetworkStatus("@createNewApi", 201); + }); }, ); diff --git a/app/client/cypress/support/Pages/ApiPage.ts b/app/client/cypress/support/Pages/ApiPage.ts index 3eb7de07f7..1736a9b517 100644 --- a/app/client/cypress/support/Pages/ApiPage.ts +++ b/app/client/cypress/support/Pages/ApiPage.ts @@ -15,7 +15,7 @@ export class ApiPage { // private datasources = ObjectsRegistry.DataSources; - private _createapi = ".t--createBlankApiCard"; + _createapi = ".t--createBlankApiCard"; _resourceUrl = ".t--dataSourceField"; private _headerKey = (index: number) => ".t--actionConfiguration\\.headers\\[" + diff --git a/app/client/cypress/support/Pages/DataSources.ts b/app/client/cypress/support/Pages/DataSources.ts index a4cedc5ec9..47e909fc3b 100644 --- a/app/client/cypress/support/Pages/DataSources.ts +++ b/app/client/cypress/support/Pages/DataSources.ts @@ -310,6 +310,7 @@ export class DataSources { _dsStructurePreviewMode = ".datasourceStructure-datasource-view-mode"; private _dsSchemaEntityItem = ".t--entity-item"; private _entityTriggerElement = ".t--template-menu-trigger"; + _dsSchemaTableResponse = ".t--table-response"; public AssertDSEditViewMode(mode: AppModes) { if (mode == "Edit") this.agHelper.AssertElementAbsence(this._editButton);