budibase/packages/builder/cypress/integration/appPublishWorkflow.spec.js

110 lines
4.2 KiB
JavaScript

import filterTests from "../support/filterTests"
filterTests(['all'], () => {
context("Publish Application Workflow", () => {
before(() => {
cy.login()
cy.createTestApp()
})
it("Should reflect the unpublished status correctly", () => {
cy.visit(`${Cypress.config().baseUrl}/builder`)
cy.wait(1000)
cy.get(".appTable")
let appStatusEle = cy.get(".app-status").eq(0)
appStatusEle.contains("Unpublished")
appStatusEle.get("svg[aria-label='GlobeStrike']").should("exist")
appStatusEle.get(".app-row-actions .spectrum-Button").contains("Preview")
appStatusEle.get(".app-row-actions .spectrum-Button").contains("Edit").click({ force: true })
cy.get(".app-status-icon svg[aria-label='GlobeStrike']").should("exist")
cy.get(".app-status-icon svg[aria-label='Globe']").should("not.exist")
})
it("Should publish an application and correctly reflect that", () => {
//Assuming the previous test was run and the unpublished app is open in edit mode.
cy.get(".toprightnav button.spectrum-Button").contains("Publish").click({ force : true })
let deployModal = cy.get(".spectrum-Modal [data-cy='deploy-app-modal']").should("be.visible")
deployModal.within(() => {
cy.get(".spectrum-Button").contains("Publish").click({ force : true })
cy.wait(1000)
});
let deployModalSuccess = cy.get(".spectrum-Modal [data-cy='deploy-app-success-modal']")
deployModalSuccess.should("be.visible")
deployModalSuccess.within(() => {
cy.get("[data-cy='deployed-app-url'] input").should('have.value', Cypress.config().baseUrl + '/app/cypress-tests')
cy.get(".spectrum-Button").contains("Done").click({ force: true })
});
deployModalSuccess.should("exist")
cy.visit(`${Cypress.config().baseUrl}/builder`)
cy.wait(1000)
cy.get(".appTable")
let appStatusEle = cy.get(".app-status").eq(0)
appStatusEle.contains("Published")
appStatusEle.get("svg[aria-label='Globe']").should("exist")
appStatusEle.get(".app-row-actions .spectrum-Button").contains("View app")
appStatusEle.get(".app-row-actions .spectrum-Button").contains("Edit").click({ force: true })
const publishStatusIcon = cy.get(".app-status-icon svg[aria-label='Globe']").should("exist")
publishStatusIcon.click({ force: true })
const publishingMenu = cy.get("[data-cy='publish-popover-action']")
publishingMenu.should("be.visible")
publishingMenu.get("button[data-cy='publish-popover-action']").should("exist")
publishingMenu.get("button").contains("View App").should("exist")
publishingMenu.get(".publish-popover-message").should("have.text", "Last Published: a few seconds ago")
})
it("Should unpublish an application from the top navigation and reflect the status change", () => {
//Assuming the previous test app exists and is published
cy.visit(`${Cypress.config().baseUrl}/builder`)
cy.get(".appTable")
let appStatusEle = cy.get(".app-status").eq(0)
appStatusEle.contains("Published")
appStatusEle.get("svg[aria-label='Globe']").should("exist")
appStatusEle.get(".app-row-actions .spectrum-Button").contains("View app")
appStatusEle.get(".app-row-actions .spectrum-Button").contains("Edit").click({ force: true })
//The published status
const publishStatusIcon = cy.get(".app-status-icon svg[aria-label='Globe']").should("exist")
publishStatusIcon.click({ force: true })
const publishingMenu = cy.get("[data-cy='publish-popover-action']")
publishingMenu.should("be.visible")
const unpublishButton = publishingMenu.get("button[data-cy='publish-popover-action']")
unpublishButton.should("exist")
unpublishButton.click({ force : true })
const unpublishModal = cy.get("[data-cy='unpublish-modal']")
unpublishModal.should("be.visible")
unpublishModal.get(".confirm-wrap button").click({ force: true })
cy.get(".app-status-icon svg[aria-label='GlobeStrike']").should("exist")
cy.visit(`${Cypress.config().baseUrl}/builder`)
appStatusEle = cy.get(".appTable")
appStatusEle.get(".app-status").eq(0).contains("Unpublished")
})
})
})