From 69d6dbc23afe7bbdf2930a32309e7738a8b2abb1 Mon Sep 17 00:00:00 2001 From: Mitch-Budibase Date: Fri, 1 Apr 2022 11:31:18 +0100 Subject: [PATCH] Updating tests to work with test Env I've made some changes to the tests and commands file to allow for the tests to run within the Test env after the latest round of UI changes. Some of these changes also allow for testing instances in which apps already exist - This is specific for the test env, the CI runs always have a clean instance --- .../changeAppIconAndColour.spec.js | 4 - .../cypress/integration/createApp.spec.js | 78 ++++++++++++------- .../cypress/integration/createTable.spec.js | 4 - .../integration/createUserAndRoles.spec.js | 9 ++- .../cypress/integration/createView.spec.js | 1 - .../integration/datasources/rest.spec.js | 1 - .../queryLevelTransformers.spec.js | 3 +- .../integration/renameAnApplication.spec.js | 6 +- packages/builder/cypress/support/commands.js | 45 +++++++---- 9 files changed, 86 insertions(+), 65 deletions(-) diff --git a/packages/builder/cypress/integration/changeAppIconAndColour.spec.js b/packages/builder/cypress/integration/changeAppIconAndColour.spec.js index bd532aa3f..0db2d49e3 100644 --- a/packages/builder/cypress/integration/changeAppIconAndColour.spec.js +++ b/packages/builder/cypress/integration/changeAppIconAndColour.spec.js @@ -6,10 +6,6 @@ filterTests(['all'], () => { cy.login() }) - after(() => { - cy.deleteAllApps() - }) - it("should change the icon and colour for an application", () => { // Search for test application cy.applicationInAppTable("Cypress Tests") diff --git a/packages/builder/cypress/integration/createApp.spec.js b/packages/builder/cypress/integration/createApp.spec.js index 9507f88be..486753424 100644 --- a/packages/builder/cypress/integration/createApp.spec.js +++ b/packages/builder/cypress/integration/createApp.spec.js @@ -3,25 +3,32 @@ import filterTests from '../support/filterTests' filterTests(['smoke', 'all'], () => { context("Create an Application", () => { - beforeEach(() => { + before(() => { cy.login() + cy.deleteApp("Cypress Tests") }) - it("should show the new user UI/UX", () => { - cy.visit(`${Cypress.config().baseUrl}/builder`) - cy.get(`[data-cy="create-app-btn"]`).contains('Start from scratch').should("exist") - cy.get(`[data-cy="import-app-btn"]`).should("exist") - - cy.get(".template-category-filters").should("exist") - cy.get(".template-categories").should("exist") - - cy.get(".appTable").should("not.exist") - }) + if (!(Cypress.env("TEST_ENV"))) { + it("should show the new user UI/UX", () => { + cy.visit(`${Cypress.config().baseUrl}/builder`) + cy.get(`[data-cy="create-app-btn"]`).contains('Start from scratch').should("exist") + cy.get(`[data-cy="import-app-btn"]`).should("exist") + + cy.get(".template-category-filters").should("exist") + cy.get(".template-categories").should("exist") + + cy.get(".appTable").should("not.exist") + }) + } it("should provide filterable templates", () => { cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(500) + if (Cypress.env("TEST_ENV")) { + cy.get(".spectrum-Button").contains("Templates").click({force: true}) + } + cy.get(".template-category-filters").should("exist") cy.get(".template-categories").should("exist") @@ -39,14 +46,22 @@ filterTests(['smoke', 'all'], () => { cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(500) - const appName = "A New App" - - cy.get(`[data-cy="create-app-btn"]`).contains('Start from scratch').click({force: true}) + // Start create app process. If apps already exist, click second button + cy.get(`[data-cy="create-app-btn"]`).click({ force: true }) + cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`) + .its("body") + .then(val => { + if (val.length > 0) { + cy.get(`[data-cy="create-app-btn"]`).click({ force: true }) + } + }) + + const appName = "Cypress Tests" cy.get(".spectrum-Modal").within(() => { //Auto fill cy.get("input").eq(0).type(appName).should("have.value", appName).blur() - cy.get("input").eq(1).should("have.value", "/a-new-app") + cy.get("input").eq(1).should("have.value", "/cypress-tests") cy.get(".spectrum-ButtonGroup").contains("Create app").should('not.be.disabled') //Empty the app url - disabled create @@ -69,8 +84,7 @@ filterTests(['smoke', 'all'], () => { it("should create the first application from scratch", () => { const appName = "Cypress Tests" - cy.deleteApp(appName) - cy.createApp(appName, "This app is used for Cypress testing.") + cy.createApp(appName) cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(1000) @@ -83,10 +97,19 @@ filterTests(['smoke', 'all'], () => { cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(500) + // Navigate to Create new app section if apps already exist + cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`) + .its("body") + .then(val => { + if (val.length > 0) { + cy.get(`[data-cy="create-app-btn"]`).click({ force: true }) + } + }) + cy.get(".template-category-filters").should("exist") cy.get(".template-categories").should("exist") - //### Select nth template and choose to create? + // Select template cy.get('.template-category').eq(0).within(() => { const card = cy.get('.template-card').eq(0).should("exist"); const cardOverlay = card.get('.template-thumbnail-action-overlay').should("exist") @@ -94,7 +117,7 @@ filterTests(['smoke', 'all'], () => { cardOverlay.get("button").contains("Use template").should("exist").click({force: true}) }) - //### CMD Create app from theme card + // CMD Create app from theme card cy.get(".spectrum-Modal").should('be.visible') const templateName = cy.get(".spectrum-Modal .template-thumbnail-text") @@ -111,27 +134,22 @@ filterTests(['smoke', 'all'], () => { cy.wait(1000) cy.applicationInAppTable(templateNameText) - cy.deleteAllApps() + cy.deleteApp(templateNameText) }); }) it("should display a second application and app filtering", () => { + // Create first app const appName = "Cypress Tests" - cy.deleteApp(appName) - cy.createApp(appName, "This app is used for Cypress testing.") + cy.createApp(appName) cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(500) + // Create second app const secondAppName = "Second App Demo" - cy.deleteApp(secondAppName) - - cy.get(`[data-cy="create-app-btn"]`).contains('Create new app').click({force: true}) - cy.wait(500) - cy.url().should('include', '/builder/portal/apps/create') - - cy.createAppFromScratch(secondAppName) + cy.createApp(secondAppName) cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(500) @@ -140,7 +158,7 @@ filterTests(['smoke', 'all'], () => { cy.searchForApplication(appName) cy.searchForApplication(secondAppName) - cy.deleteAllApps() + cy.deleteApp(secondAppName) }) }) diff --git a/packages/builder/cypress/integration/createTable.spec.js b/packages/builder/cypress/integration/createTable.spec.js index df6ca5c7c..81b7c2f04 100644 --- a/packages/builder/cypress/integration/createTable.spec.js +++ b/packages/builder/cypress/integration/createTable.spec.js @@ -7,10 +7,6 @@ filterTests(["smoke", "all"], () => { cy.createTestApp() }) - after(() => { - cy.deleteAllApps() - }) - it("should create a new Table", () => { cy.createTable("dog") cy.wait(1000) diff --git a/packages/builder/cypress/integration/createUserAndRoles.spec.js b/packages/builder/cypress/integration/createUserAndRoles.spec.js index 9c12971bd..17864dd97 100644 --- a/packages/builder/cypress/integration/createUserAndRoles.spec.js +++ b/packages/builder/cypress/integration/createUserAndRoles.spec.js @@ -4,11 +4,14 @@ filterTests(["smoke", "all"], () => { context("Create a User and Assign Roles", () => { before(() => { cy.login() - cy.visit(`${Cypress.config().baseUrl}/builder`) - cy.wait(500) - cy.createAppFromScratch("Initial App") }) + if (!(Cypress.env("TEST_ENV"))) { + after(() => { + cy.deleteAllApps() + }) + } + it("should create a user", () => { cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(1000) diff --git a/packages/builder/cypress/integration/createView.spec.js b/packages/builder/cypress/integration/createView.spec.js index ad21d6afa..a8c3b03ce 100644 --- a/packages/builder/cypress/integration/createView.spec.js +++ b/packages/builder/cypress/integration/createView.spec.js @@ -4,7 +4,6 @@ filterTests(['smoke', 'all'], () => { context("Create a View", () => { before(() => { cy.login() - cy.deleteAllApps() cy.createTestApp() cy.createTable("data") diff --git a/packages/builder/cypress/integration/datasources/rest.spec.js b/packages/builder/cypress/integration/datasources/rest.spec.js index 7216a1384..a15487c01 100644 --- a/packages/builder/cypress/integration/datasources/rest.spec.js +++ b/packages/builder/cypress/integration/datasources/rest.spec.js @@ -4,7 +4,6 @@ filterTests(["smoke", "all"], () => { context("REST Datasource Testing", () => { before(() => { cy.login() - cy.deleteAllApps() cy.createTestApp() }) diff --git a/packages/builder/cypress/integration/queryLevelTransformers.spec.js b/packages/builder/cypress/integration/queryLevelTransformers.spec.js index 86aea8eaf..bec0825e7 100644 --- a/packages/builder/cypress/integration/queryLevelTransformers.spec.js +++ b/packages/builder/cypress/integration/queryLevelTransformers.spec.js @@ -4,8 +4,7 @@ filterTests(["smoke", "all"], () => { context("Query Level Transformers", () => { before(() => { cy.login() - cy.deleteAllApps() - cy.createApp("Cypress Tests") + cy.createTestApp() }) it("should write a transformer function", () => { diff --git a/packages/builder/cypress/integration/renameAnApplication.spec.js b/packages/builder/cypress/integration/renameAnApplication.spec.js index 258479b62..ebfc2c3ae 100644 --- a/packages/builder/cypress/integration/renameAnApplication.spec.js +++ b/packages/builder/cypress/integration/renameAnApplication.spec.js @@ -15,6 +15,7 @@ filterTests(['all'], () => { renameApp(appName, appRename) cy.reload() cy.wait(1000) + cy.searchForApplication(appRename) cy.get(".appTable").find(".title").should("have.length", 1) cy.applicationInAppTable(appRename) // Set app name back to Cypress Tests @@ -52,8 +53,6 @@ filterTests(['all'], () => { cy.reload() cy.wait(1000) cy.applicationInAppTable(appName) - cy.get(".appTable").find(".title").should("have.length", 1) - }) xit("Should create two applications with the same name", () => { @@ -82,7 +81,6 @@ filterTests(['all'], () => { cy.reload() cy.wait(1000) cy.applicationInAppTable(numberName) - cy.get(".appTable").find(".title").should("have.length", 1) cy.reload() cy.wait(1000) renameApp(numberName, specialCharName) @@ -94,7 +92,7 @@ filterTests(['all'], () => { }) const renameApp = (originalName, changedName, published, noName) => { - cy.applicationInAppTable(originalName) + cy.searchForApplication(originalName) cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`) .its("body") .then(val => { diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js index c45978e02..dee14a92a 100644 --- a/packages/builder/cypress/support/commands.js +++ b/packages/builder/cypress/support/commands.js @@ -35,9 +35,17 @@ Cypress.Commands.add("login", () => { Cypress.Commands.add("createApp", name => { cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(500) - cy.get(`[data-cy="create-app-btn"]`).click({ force: true }) + // If apps already exist + cy.request(`${Cypress.config().baseUrl}/api/applications?status=all`) + .its("body") + .then(val => { + if (val.length > 0) { + cy.get(`[data-cy="create-app-btn"]`).click({ force: true }) + } + }) + cy.get(".spectrum-Modal").within(() => { cy.get("input").eq(0).type(name).should("have.value", name).blur() cy.get(".spectrum-ButtonGroup").contains("Create app").click() @@ -53,23 +61,30 @@ Cypress.Commands.add("deleteApp", name => { .its("body") .then(val => { if (val.length > 0) { - const appId = val.reduce((acc, app) => { - if (name === app.name) { - acc = app.appId + if (Cypress.env("TEST_ENV")) { + cy.searchForApplication(name) + cy.get(".appTable").within(() => { + cy.get(".spectrum-Icon").eq(1).click() + }) + } else { + const appId = val.reduce((acc, app) => { + if (name === app.name) { + acc = app.appId + } + return acc + }, "") + + if (appId == "") { + return } - return acc - }, "") - if (appId == "") { - return + const appIdParsed = appId.split("_").pop() + const actionEleId = `[data-cy=row_actions_${appIdParsed}]` + cy.get(actionEleId).within(() => { + cy.get(".spectrum-Icon").eq(0).click() + }) } - const appIdParsed = appId.split("_").pop() - const actionEleId = `[data-cy=row_actions_${appIdParsed}]` - cy.get(actionEleId).within(() => { - cy.get(".spectrum-Icon").eq(0).click() - }) - cy.get(".spectrum-Menu").then($menu => { if ($menu.text().includes("Unpublish")) { cy.get(".spectrum-Menu").contains("Unpublish").click() @@ -335,8 +350,6 @@ Cypress.Commands.add("searchForApplication", appName => { cy.get("input").eq(0).type(appName) }) }) - // Confirms app exists after search - cy.applicationInAppTable(appName) }) //Assumes there are no others