From f8f311f92439239bd86533b2a95166bb6342da6b Mon Sep 17 00:00:00 2001 From: Dean Date: Fri, 8 Apr 2022 09:56:20 +0100 Subject: [PATCH] Test updates for screen creation --- .../cypress/integration/autoScreensUI.spec.js | 52 +++++++++++++++++- .../cypress/integration/createScreen.js | 23 ++++---- packages/builder/cypress/support/commands.js | 53 ++++++++++++++----- 3 files changed, 101 insertions(+), 27 deletions(-) diff --git a/packages/builder/cypress/integration/autoScreensUI.spec.js b/packages/builder/cypress/integration/autoScreensUI.spec.js index 53ea94a61f..c3fbf2bd7d 100644 --- a/packages/builder/cypress/integration/autoScreensUI.spec.js +++ b/packages/builder/cypress/integration/autoScreensUI.spec.js @@ -4,10 +4,42 @@ filterTests(['smoke', 'all'], () => { context("Auto Screens UI", () => { before(() => { cy.login() - cy.createTestApp() }) + it("should disable the autogenerated screen options if no sources are available", () => { + cy.createApp("First Test App", false) + + cy.closeModal(); + + cy.contains("Design").click() + cy.get("[aria-label=AddCircle]").click() + cy.get(".spectrum-Modal").within(() => { + cy.get(".item.disabled").contains("Autogenerated Screens") + cy.get(".confirm-wrap .spectrum-Button").should('be.disabled') + }) + + cy.deleteAllApps() + }); + + it("should not display incompatible sources", () => { + cy.createApp("Test App") + + cy.selectExternalDatasource("REST") + cy.selectExternalDatasource("S3") + cy.get(".spectrum-Modal").within(() => { + cy.get(".spectrum-Button").contains("Save and continue to query").click({ force : true }) + }) + + cy.navigateToAutogeneratedModal() + + cy.get('.data-source-entry').should('have.length', 1) + cy.get('.data-source-entry') + + cy.deleteAllApps() + }); + it("should generate internal table screens", () => { + cy.createTestApp() // Create autogenerated screens from the internal table cy.createAutogeneratedScreens(["Cypress Tests"]) // Confirm screens have been auto generated @@ -33,6 +65,24 @@ filterTests(['smoke', 'all'], () => { .and('contain', 'table-two/new/row') }) + it("should generate multiple internal table screens with the same screen access level", () => { + //The tables created in the previous step still exist + + cy.createTable("Table Three") + cy.createTable("Table Four") + cy.createAutogeneratedScreens(["Table Three", "Table Four"], "Admin") + + cy.get(".nav-items-container").within(() => { + cy.get(".nav-item").contains("/table-three").click() + cy.get(".nav-item").should('contain', 'table-three/:id') + .and('contain', 'table-three/new/row') + + cy.get(".nav-item").contains("/table-four").click() + cy.get(".nav-item").should('contain', 'table-four/:id') + .and('contain', 'table-four/new/row') + }) + }) + if (Cypress.env("TEST_ENV")) { it("should generate data source screens", () => { // Using MySQL data source for testing this diff --git a/packages/builder/cypress/integration/createScreen.js b/packages/builder/cypress/integration/createScreen.js index 0ed10bed2e..450b360145 100644 --- a/packages/builder/cypress/integration/createScreen.js +++ b/packages/builder/cypress/integration/createScreen.js @@ -1,18 +1,6 @@ import filterTests from "../support/filterTests" filterTests(["smoke", "all"], () => { - /* - Blank screen - URL - Screen access - Screen access confirmation. - - CRUD Tests - list the sources - check for exluded contents - rest, user table etc - */ - context("Screen Tests", () => { before(() => { cy.login() @@ -34,11 +22,18 @@ filterTests(["smoke", "all"], () => { }) }) - it("Should update create the screen with the selected", () => { - cy.createScreen("Test Screen", "admin only", "Admin") + it("Should create a blank screen with the selected access level", () => { + cy.createScreen("Test Screen Admin", "admin only", "Admin") + cy.get(".nav-items-container").within(() => { cy.contains("/admin-only").should("exist") }) + + cy.createScreen("Test Screen Public", "open to all", "Public") + + cy.get(".nav-items-container").within(() => { + cy.contains("/open-to-all").should("exist") + }) }) }) }) diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js index f49e71f8fa..f3b0418120 100644 --- a/packages/builder/cypress/support/commands.js +++ b/packages/builder/cypress/support/commands.js @@ -32,7 +32,17 @@ Cypress.Commands.add("login", () => { }) }) -Cypress.Commands.add("createApp", name => { +Cypress.Commands.add("closeModal", () => { + cy.get(".spectrum-Modal").within(() => { + cy.get(".close-icon").click() + cy.wait(500) + }) +}) + +Cypress.Commands.add("createApp", (name, addDefaultTable) => { + const shouldCreateDefaultTable = + typeof addDefaultTable != "boolean" ? true : addDefaultTable + cy.visit(`${Cypress.config().baseUrl}/builder`) cy.wait(500) cy.get(`[data-cy="create-app-btn"]`).click({ force: true }) @@ -51,7 +61,9 @@ Cypress.Commands.add("createApp", name => { cy.get(".spectrum-ButtonGroup").contains("Create app").click() cy.wait(10000) }) - cy.createTable("Cypress Tests", true) + if (shouldCreateDefaultTable) { + cy.createTable("Cypress Tests", true) + } }) Cypress.Commands.add("deleteApp", name => { @@ -293,21 +305,38 @@ Cypress.Commands.add("createScreen", (screenName, route, accessLevelLabel) => { }) }) -Cypress.Commands.add("createAutogeneratedScreens", screenNames => { +Cypress.Commands.add("navigateToAutogeneratedModal", () => { // Screen name must already exist within data source cy.contains("Design").click() cy.get("[aria-label=AddCircle]").click() - cy.get(".spectrum-Button").contains("Add screens").click({ force: true }) - cy.wait(500) - - for (let i = 0; i < screenNames.length; i++) { - cy.get(".data-source-entry").contains(screenNames[i]).click() - } - - cy.get(".spectrum-Button").contains("Add screens").click({ force: true }) - cy.wait(4000) + cy.get(".spectrum-Modal").within(() => { + cy.get(".item").contains("Autogenerated Screens").click() + cy.get(".spectrum-Button").contains("Add screens").click({ force: true }) + cy.wait(500) + }) }) +Cypress.Commands.add( + "createAutogeneratedScreens", + (screenNames, accessLevelLabel) => { + cy.navigateToAutogeneratedModal() + + for (let i = 0; i < screenNames.length; i++) { + cy.get(".data-source-entry").contains(screenNames[i]).click() + } + + cy.get(".spectrum-Modal").within(() => { + if (accessLevelLabel) { + cy.get(".spectrum-Picker-label").click() + cy.wait(500) + cy.contains(accessLevelLabel).click() + } + cy.get(".spectrum-Button").contains("Confirm").click({ force: true }) + cy.wait(4000) + }) + } +) + Cypress.Commands.add("addRow", values => { cy.contains("Create row").click() cy.get(".spectrum-Modal").within(() => {