From 067fdc2deeb0836a930fa8e8cc57c4fca7e311c0 Mon Sep 17 00:00:00 2001 From: Pushpa B Date: Tue, 10 Mar 2020 09:38:12 +0000 Subject: [PATCH 1/8] Feature/cypress test --- app/client/build.sh | 2 +- app/client/cypress.json | 12 +- app/client/cypress/fixtures/user.json | 6 + .../integration/OnBoarding/Login_spec.js | 20 ++ .../integration/examples/actions.spec.js | 309 ---------------- .../integration/examples/aliasing.spec.js | 46 --- .../integration/examples/assertions.spec.js | 168 --------- .../integration/examples/connectors.spec.js | 96 ----- .../integration/examples/cookies.spec.js | 79 ---- .../integration/examples/cypress_api.spec.js | 228 ------------ .../integration/examples/files.spec.js | 119 ------ .../examples/local_storage.spec.js | 58 --- .../integration/examples/location.spec.js | 34 -- .../cypress/integration/examples/misc.spec.js | 93 ----- .../integration/examples/navigation.spec.js | 60 ---- .../examples/network_requests.spec.js | 217 ----------- .../integration/examples/querying.spec.js | 114 ------ .../examples/spies_stubs_clocks.spec.js | 98 ----- .../integration/examples/traversal.spec.js | 140 -------- .../integration/examples/utilities.spec.js | 145 -------- .../integration/examples/viewport.spec.js | 63 ---- .../integration/examples/waiting.spec.js | 35 -- .../integration/examples/window.spec.js | 24 -- app/client/cypress/locators/LoginPage.json | 5 + app/client/cypress/plugins/index.js | 6 +- app/client/cypress/support/commands.js | 34 +- app/client/cypress/test.sh | 1 + app/client/package.json | 9 +- app/client/results/mochawesome.json | 105 ++++++ .../test/__mocks__/RealmExecutorMock.ts | 19 - app/client/yarn.lock | 339 ++++++++++++++++-- 31 files changed, 483 insertions(+), 2201 deletions(-) create mode 100644 app/client/cypress/fixtures/user.json create mode 100644 app/client/cypress/integration/OnBoarding/Login_spec.js delete mode 100644 app/client/cypress/integration/examples/actions.spec.js delete mode 100644 app/client/cypress/integration/examples/aliasing.spec.js delete mode 100644 app/client/cypress/integration/examples/assertions.spec.js delete mode 100644 app/client/cypress/integration/examples/connectors.spec.js delete mode 100644 app/client/cypress/integration/examples/cookies.spec.js delete mode 100644 app/client/cypress/integration/examples/cypress_api.spec.js delete mode 100644 app/client/cypress/integration/examples/files.spec.js delete mode 100644 app/client/cypress/integration/examples/local_storage.spec.js delete mode 100644 app/client/cypress/integration/examples/location.spec.js delete mode 100644 app/client/cypress/integration/examples/misc.spec.js delete mode 100644 app/client/cypress/integration/examples/navigation.spec.js delete mode 100644 app/client/cypress/integration/examples/network_requests.spec.js delete mode 100644 app/client/cypress/integration/examples/querying.spec.js delete mode 100644 app/client/cypress/integration/examples/spies_stubs_clocks.spec.js delete mode 100644 app/client/cypress/integration/examples/traversal.spec.js delete mode 100644 app/client/cypress/integration/examples/utilities.spec.js delete mode 100644 app/client/cypress/integration/examples/viewport.spec.js delete mode 100644 app/client/cypress/integration/examples/waiting.spec.js delete mode 100644 app/client/cypress/integration/examples/window.spec.js create mode 100644 app/client/cypress/locators/LoginPage.json create mode 100644 app/client/cypress/test.sh create mode 100644 app/client/results/mochawesome.json delete mode 100644 app/client/test/__mocks__/RealmExecutorMock.ts diff --git a/app/client/build.sh b/app/client/build.sh index f924248d5f..ab3762d4c6 100755 --- a/app/client/build.sh +++ b/app/client/build.sh @@ -11,5 +11,5 @@ GIT_BRANCH=$(git branch --no-color | grep -E '^\*' | sed 's/\*[^a-z]*//g') REACT_APP_SENTRY_RELEASE=$GIT_SHA craco --max-old-space-size=2048 build --config craco.build.config.js -rm $PWD/build/static/js/*.js.map +rm ./build/static/js/*.js.map echo "build finished" \ No newline at end of file diff --git a/app/client/cypress.json b/app/client/cypress.json index 0967ef424b..3c75281b43 100644 --- a/app/client/cypress.json +++ b/app/client/cypress.json @@ -1 +1,11 @@ -{} +{ + "baseUrl":"http://dev.appsmith.com:3000/", + + "reporter": "mochawesome", + "reporterOptions": { + "reportDir": "results", + "overwrite": false, + "html": false, + "json": true + } +} \ No newline at end of file diff --git a/app/client/cypress/fixtures/user.json b/app/client/cypress/fixtures/user.json new file mode 100644 index 0000000000..9d5a67368d --- /dev/null +++ b/app/client/cypress/fixtures/user.json @@ -0,0 +1,6 @@ + + { + "username": "testowner@appsmith.com", + "password": "own3rT3st1ng", + + } \ No newline at end of file diff --git a/app/client/cypress/integration/OnBoarding/Login_spec.js b/app/client/cypress/integration/OnBoarding/Login_spec.js new file mode 100644 index 0000000000..ba0cb7ea2c --- /dev/null +++ b/app/client/cypress/integration/OnBoarding/Login_spec.js @@ -0,0 +1,20 @@ +var loginPage= require('../../locators/LoginPage.json') +const loginData=require('../../fixtures/user.json') + +context('Cypress test',function() { + +it('Login functionality',function(){ + + cy.LogintoApp(loginData.username,loginData.password) + cy.get('input[type="text"]').type('Test app') + cy.wait(3000) + cy.get('.t--application-edit-link').click() + cy.wait(5000) + cy.get('.t--draggable-buttonwidget').click({ force: true }) + cy.wait(2000) + cy.get('textarea').first().click({ force: true }).clear({ force: true }).type('Test', { force: true }) + cy.wait(5000) + cy.get('.t--application-publish-btn').click() + +}) +}) \ No newline at end of file diff --git a/app/client/cypress/integration/examples/actions.spec.js b/app/client/cypress/integration/examples/actions.spec.js deleted file mode 100644 index 03eba5e333..0000000000 --- a/app/client/cypress/integration/examples/actions.spec.js +++ /dev/null @@ -1,309 +0,0 @@ -/// - -context("Actions", () => { - beforeEach(() => { - cy.visit("https://example.cypress.io/commands/actions"); - }); - - // https://on.cypress.io/interacting-with-elements - - it(".type() - type into a DOM element", () => { - // https://on.cypress.io/type - cy.get(".action-email") - .type("fake@email.com") - .should("have.value", "fake@email.com") - - // .type() with special character sequences - .type("{leftarrow}{rightarrow}{uparrow}{downarrow}") - .type("{del}{selectall}{backspace}") - - // .type() with key modifiers - .type("{alt}{option}") //these are equivalent - .type("{ctrl}{control}") //these are equivalent - .type("{meta}{command}{cmd}") //these are equivalent - .type("{shift}") - - // Delay each keypress by 0.1 sec - .type("slow.typing@email.com", { delay: 100 }) - .should("have.value", "slow.typing@email.com"); - - cy.get(".action-disabled") - // Ignore error checking prior to type - // like whether the input is visible or disabled - .type("disabled error checking", { force: true }) - .should("have.value", "disabled error checking"); - }); - - it(".focus() - focus on a DOM element", () => { - // https://on.cypress.io/focus - cy.get(".action-focus") - .focus() - .should("have.class", "focus") - .prev() - .should("have.attr", "style", "color: orange;"); - }); - - it(".blur() - blur off a DOM element", () => { - // https://on.cypress.io/blur - cy.get(".action-blur") - .type("About to blur") - .blur() - .should("have.class", "error") - .prev() - .should("have.attr", "style", "color: red;"); - }); - - it(".clear() - clears an input or textarea element", () => { - // https://on.cypress.io/clear - cy.get(".action-clear") - .type("Clear this text") - .should("have.value", "Clear this text") - .clear() - .should("have.value", ""); - }); - - it(".submit() - submit a form", () => { - // https://on.cypress.io/submit - cy.get(".action-form") - .find('[type="text"]') - .type("HALFOFF"); - cy.get(".action-form") - .submit() - .next() - .should("contain", "Your form has been submitted!"); - }); - - it(".click() - click on a DOM element", () => { - // https://on.cypress.io/click - cy.get(".action-btn").click(); - - // You can click on 9 specific positions of an element: - // ----------------------------------- - // | topLeft top topRight | - // | | - // | | - // | | - // | left center right | - // | | - // | | - // | | - // | bottomLeft bottom bottomRight | - // ----------------------------------- - - // clicking in the center of the element is the default - cy.get("#action-canvas").click(); - - cy.get("#action-canvas").click("topLeft"); - cy.get("#action-canvas").click("top"); - cy.get("#action-canvas").click("topRight"); - cy.get("#action-canvas").click("left"); - cy.get("#action-canvas").click("right"); - cy.get("#action-canvas").click("bottomLeft"); - cy.get("#action-canvas").click("bottom"); - cy.get("#action-canvas").click("bottomRight"); - - // .click() accepts an x and y coordinate - // that controls where the click occurs :) - - cy.get("#action-canvas") - .click(80, 75) // click 80px on x coord and 75px on y coord - .click(170, 75) - .click(80, 165) - .click(100, 185) - .click(125, 190) - .click(150, 185) - .click(170, 165); - - // click multiple elements by passing multiple: true - cy.get(".action-labels>.label").click({ multiple: true }); - - // Ignore error checking prior to clicking - cy.get(".action-opacity>.btn").click({ force: true }); - }); - - it(".dblclick() - double click on a DOM element", () => { - // https://on.cypress.io/dblclick - - // Our app has a listener on 'dblclick' event in our 'scripts.js' - // that hides the div and shows an input on double click - cy.get(".action-div") - .dblclick() - .should("not.be.visible"); - cy.get(".action-input-hidden").should("be.visible"); - }); - - it(".rightclick() - right click on a DOM element", () => { - // https://on.cypress.io/rightclick - - // Our app has a listener on 'contextmenu' event in our 'scripts.js' - // that hides the div and shows an input on right click - cy.get(".rightclick-action-div") - .rightclick() - .should("not.be.visible"); - cy.get(".rightclick-action-input-hidden").should("be.visible"); - }); - - it(".check() - check a checkbox or radio element", () => { - // https://on.cypress.io/check - - // By default, .check() will check all - // matching checkbox or radio elements in succession, one after another - cy.get('.action-checkboxes [type="checkbox"]') - .not("[disabled]") - .check() - .should("be.checked"); - - cy.get('.action-radios [type="radio"]') - .not("[disabled]") - .check() - .should("be.checked"); - - // .check() accepts a value argument - cy.get('.action-radios [type="radio"]') - .check("radio1") - .should("be.checked"); - - // .check() accepts an array of values - cy.get('.action-multiple-checkboxes [type="checkbox"]') - .check(["checkbox1", "checkbox2"]) - .should("be.checked"); - - // Ignore error checking prior to checking - cy.get(".action-checkboxes [disabled]") - .check({ force: true }) - .should("be.checked"); - - cy.get('.action-radios [type="radio"]') - .check("radio3", { force: true }) - .should("be.checked"); - }); - - it(".uncheck() - uncheck a checkbox element", () => { - // https://on.cypress.io/uncheck - - // By default, .uncheck() will uncheck all matching - // checkbox elements in succession, one after another - cy.get('.action-check [type="checkbox"]') - .not("[disabled]") - .uncheck() - .should("not.be.checked"); - - // .uncheck() accepts a value argument - cy.get('.action-check [type="checkbox"]') - .check("checkbox1") - .uncheck("checkbox1") - .should("not.be.checked"); - - // .uncheck() accepts an array of values - cy.get('.action-check [type="checkbox"]') - .check(["checkbox1", "checkbox3"]) - .uncheck(["checkbox1", "checkbox3"]) - .should("not.be.checked"); - - // Ignore error checking prior to unchecking - cy.get(".action-check [disabled]") - .uncheck({ force: true }) - .should("not.be.checked"); - }); - - it(".select() - select an option in a