Refactor cypress to use common app creation functionality and stop cypress deleting all apps
This commit is contained in:
parent
5ce959a164
commit
9fb40759d6
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"baseUrl": "http://localhost:4005/_builder/",
|
"baseUrl": "http://localhost:4001/_builder/",
|
||||||
"video": true,
|
"video": true,
|
||||||
"projectId": "bmbemn",
|
"projectId": "bmbemn",
|
||||||
"env": {
|
"env": {
|
||||||
"PORT": "4005"
|
"PORT": "4001"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
context("Create an Application", () => {
|
context("Create an Application", () => {
|
||||||
beforeEach(() => {
|
|
||||||
cy.server()
|
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
|
||||||
})
|
|
||||||
|
|
||||||
it("should create a new application", () => {
|
it("should create a new application", () => {
|
||||||
cy.createApp("My Cool App", "This is a description")
|
cy.createTestApp()
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
cy.contains("My Cool App").should("exist")
|
cy.contains("Cypress Tests").should("exist")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
context("Create a automation", () => {
|
context("Create a automation", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.server()
|
cy.createTestApp()
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
|
||||||
|
|
||||||
cy.createApp(
|
|
||||||
"Automation Test App",
|
|
||||||
"This app is used to test that automations do in fact work!"
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// https://on.cypress.io/interacting-with-elements
|
// https://on.cypress.io/interacting-with-elements
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
context("Create Bindings", () => {
|
context("Create Bindings", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.createApp("Cypress Tests", "Cypress test app")
|
cy.createTestApp()
|
||||||
cy.navigateToFrontend()
|
cy.navigateToFrontend()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ context("Create Components", () => {
|
||||||
let headlineId
|
let headlineId
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.createApp("Cypress Tests", "Cypress test app")
|
cy.createTestApp()
|
||||||
cy.createTable("dog")
|
cy.createTable("dog")
|
||||||
cy.addColumn("dog", "name", "string")
|
cy.addColumn("dog", "name", "string")
|
||||||
cy.addColumn("dog", "age", "number")
|
cy.addColumn("dog", "age", "number")
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
context("Screen Tests", () => {
|
||||||
|
before(() => {
|
||||||
|
cy.createTestApp()
|
||||||
|
cy.navigateToFrontend()
|
||||||
|
})
|
||||||
|
|
||||||
|
it("Should successfully create a screen", () => {
|
||||||
|
cy.createScreen("Test Screen", "/test")
|
||||||
|
})
|
||||||
|
})
|
|
@ -1,7 +1,6 @@
|
||||||
context("Create a Table", () => {
|
context("Create a Table", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
cy.createTestApp()
|
||||||
cy.createApp("Table App", "Table App Description")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should create a new Table", () => {
|
it("should create a new Table", () => {
|
||||||
|
@ -26,7 +25,9 @@ context("Create a Table", () => {
|
||||||
.trigger("mouseover")
|
.trigger("mouseover")
|
||||||
.find(".ri-pencil-line")
|
.find(".ri-pencil-line")
|
||||||
.click({ force: true })
|
.click({ force: true })
|
||||||
cy.get(".actions input").first().type("updated")
|
cy.get(".actions input")
|
||||||
|
.first()
|
||||||
|
.type("updated")
|
||||||
// Unset table display column
|
// Unset table display column
|
||||||
cy.contains("display column").click()
|
cy.contains("display column").click()
|
||||||
cy.contains("Save Column").click()
|
cy.contains("Save Column").click()
|
||||||
|
@ -44,7 +45,9 @@ context("Create a Table", () => {
|
||||||
it("deletes a row", () => {
|
it("deletes a row", () => {
|
||||||
cy.get(".ag-checkbox-input").check({ force: true })
|
cy.get(".ag-checkbox-input").check({ force: true })
|
||||||
cy.contains("Delete 1 row(s)").click()
|
cy.contains("Delete 1 row(s)").click()
|
||||||
cy.get(".modal").contains("Delete").click()
|
cy.get(".modal")
|
||||||
|
.contains("Delete")
|
||||||
|
.click()
|
||||||
cy.contains("RoverUpdated").should("not.exist")
|
cy.contains("RoverUpdated").should("not.exist")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -55,12 +58,16 @@ context("Create a Table", () => {
|
||||||
.click({ force: true })
|
.click({ force: true })
|
||||||
cy.contains("Delete").click()
|
cy.contains("Delete").click()
|
||||||
cy.wait(50)
|
cy.wait(50)
|
||||||
cy.get(".buttons").contains("Delete").click()
|
cy.get(".buttons")
|
||||||
|
.contains("Delete")
|
||||||
|
.click()
|
||||||
cy.contains("nameupdated").should("not.exist")
|
cy.contains("nameupdated").should("not.exist")
|
||||||
})
|
})
|
||||||
|
|
||||||
it("deletes a table", () => {
|
it("deletes a table", () => {
|
||||||
cy.get(".ri-more-line").first().click({ force: true })
|
cy.get(".ri-more-line")
|
||||||
|
.first()
|
||||||
|
.click({ force: true })
|
||||||
cy.get("[data-cy=delete-table]").click()
|
cy.get("[data-cy=delete-table]").click()
|
||||||
cy.contains("Delete Table").click()
|
cy.contains("Delete Table").click()
|
||||||
cy.contains("dog").should("not.exist")
|
cy.contains("dog").should("not.exist")
|
||||||
|
|
|
@ -1,17 +1,10 @@
|
||||||
context('Create a User', () => {
|
context("Create a User", () => {
|
||||||
|
before(() => {
|
||||||
|
cy.createTestApp()
|
||||||
|
})
|
||||||
|
|
||||||
before(() => {
|
it("should create a user", () => {
|
||||||
cy.server()
|
cy.createUser("bbuser@test.com", "test", "ADMIN")
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
cy.contains("bbuser").should("be.visible")
|
||||||
// https://on.cypress.io/type
|
})
|
||||||
cy.createApp('User App', 'This app is used to test user creation')
|
|
||||||
})
|
|
||||||
|
|
||||||
// https://on.cypress.io/interacting-with-elements
|
|
||||||
it('should create a user', () => {
|
|
||||||
cy.createUser("bbuser@test.com", "test", "ADMIN")
|
|
||||||
|
|
||||||
// // Check to make sure user was created!
|
|
||||||
cy.contains("bbuser").should('be.visible')
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,15 +1,6 @@
|
||||||
function removeSpacing(headers) {
|
|
||||||
let newHeaders = []
|
|
||||||
for (let header of headers) {
|
|
||||||
newHeaders.push(header.replace(/\s\s+/g, " "))
|
|
||||||
}
|
|
||||||
return newHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
context("Create a View", () => {
|
context("Create a View", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
cy.createTestApp()
|
||||||
cy.createApp("View App", "View App Description")
|
|
||||||
cy.createTable("data")
|
cy.createTable("data")
|
||||||
cy.addColumn("data", "group", "Text")
|
cy.addColumn("data", "group", "Text")
|
||||||
cy.addColumn("data", "age", "Number")
|
cy.addColumn("data", "age", "Number")
|
||||||
|
@ -36,16 +27,28 @@ context("Create a View", () => {
|
||||||
const headers = Array.from($headers).map(header =>
|
const headers = Array.from($headers).map(header =>
|
||||||
header.textContent.trim()
|
header.textContent.trim()
|
||||||
)
|
)
|
||||||
expect(removeSpacing(headers)).to.deep.eq([ "rating Number", "age Number", "group Text" ])
|
expect(removeSpacing(headers)).to.deep.eq([
|
||||||
|
"rating Number",
|
||||||
|
"age Number",
|
||||||
|
"group Text",
|
||||||
|
])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it("filters the view by age over 10", () => {
|
it("filters the view by age over 10", () => {
|
||||||
cy.contains("Filter").click()
|
cy.contains("Filter").click()
|
||||||
cy.contains("Add Filter").click()
|
cy.contains("Add Filter").click()
|
||||||
cy.get(".menu-container").find("select").first().select("age")
|
cy.get(".menu-container")
|
||||||
cy.get(".menu-container").find("select").eq(1).select("More Than")
|
.find("select")
|
||||||
cy.get(".menu-container").find("input").type(18)
|
.first()
|
||||||
|
.select("age")
|
||||||
|
cy.get(".menu-container")
|
||||||
|
.find("select")
|
||||||
|
.eq(1)
|
||||||
|
.select("More Than")
|
||||||
|
cy.get(".menu-container")
|
||||||
|
.find("input")
|
||||||
|
.type(18)
|
||||||
cy.contains("Save").click()
|
cy.contains("Save").click()
|
||||||
cy.get("[role=rowgroup] .ag-row").get($values => {
|
cy.get("[role=rowgroup] .ag-row").get($values => {
|
||||||
expect($values).to.have.length(5)
|
expect($values).to.have.length(5)
|
||||||
|
@ -57,9 +60,15 @@ context("Create a View", () => {
|
||||||
cy.viewport("macbook-15")
|
cy.viewport("macbook-15")
|
||||||
|
|
||||||
cy.contains("Calculate").click()
|
cy.contains("Calculate").click()
|
||||||
cy.get(".menu-container").find("select").eq(0).select("Statistics")
|
cy.get(".menu-container")
|
||||||
|
.find("select")
|
||||||
|
.eq(0)
|
||||||
|
.select("Statistics")
|
||||||
cy.wait(50)
|
cy.wait(50)
|
||||||
cy.get(".menu-container").find("select").eq(1).select("age")
|
cy.get(".menu-container")
|
||||||
|
.find("select")
|
||||||
|
.eq(1)
|
||||||
|
.select("age")
|
||||||
cy.contains("Save").click()
|
cy.contains("Save").click()
|
||||||
cy.wait(100)
|
cy.wait(100)
|
||||||
cy.get(".ag-center-cols-viewport").scrollTo("100%")
|
cy.get(".ag-center-cols-viewport").scrollTo("100%")
|
||||||
|
@ -68,19 +77,19 @@ context("Create a View", () => {
|
||||||
const headers = Array.from($headers).map(header =>
|
const headers = Array.from($headers).map(header =>
|
||||||
header.textContent.trim()
|
header.textContent.trim()
|
||||||
)
|
)
|
||||||
expect(removeSpacing(headers)).to.deep.eq([ "avg Number",
|
expect(removeSpacing(headers)).to.deep.eq([
|
||||||
|
"avg Number",
|
||||||
"sumsqr Number",
|
"sumsqr Number",
|
||||||
"count Number",
|
"count Number",
|
||||||
"max Number",
|
"max Number",
|
||||||
"min Number",
|
"min Number",
|
||||||
"sum Number",
|
"sum Number",
|
||||||
"field Text" ])
|
"field Text",
|
||||||
|
])
|
||||||
})
|
})
|
||||||
cy.get(".ag-cell").then($values => {
|
cy.get(".ag-cell").then($values => {
|
||||||
let values = Array.from($values).map(header =>
|
let values = Array.from($values).map(header => header.textContent.trim())
|
||||||
header.textContent.trim()
|
expect(values).to.deep.eq(["31", "5347", "5", "49", "20", "155", "age"])
|
||||||
)
|
|
||||||
expect(values).to.deep.eq([ "31", "5347", "5", "49", "20", "155", "age" ])
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -99,7 +108,15 @@ context("Create a View", () => {
|
||||||
.find(".ag-cell")
|
.find(".ag-cell")
|
||||||
.then($values => {
|
.then($values => {
|
||||||
const values = Array.from($values).map(value => value.textContent)
|
const values = Array.from($values).map(value => value.textContent)
|
||||||
expect(values).to.deep.eq([ "Students", "23.333333333333332", "1650", "3", "25", "20", "70" ])
|
expect(values).to.deep.eq([
|
||||||
|
"Students",
|
||||||
|
"23.333333333333332",
|
||||||
|
"1650",
|
||||||
|
"3",
|
||||||
|
"25",
|
||||||
|
"20",
|
||||||
|
"70",
|
||||||
|
])
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -124,3 +141,11 @@ context("Create a View", () => {
|
||||||
cy.contains("TestView Updated").should("not.be.visible")
|
cy.contains("TestView Updated").should("not.be.visible")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function removeSpacing(headers) {
|
||||||
|
let newHeaders = []
|
||||||
|
for (let header of headers) {
|
||||||
|
newHeaders.push(header.replace(/\s\s+/g, " "))
|
||||||
|
}
|
||||||
|
return newHeaders
|
||||||
|
}
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
|
|
||||||
context('Screen Tests', () => {
|
|
||||||
before(() => {
|
|
||||||
cy.server()
|
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
|
||||||
cy.createApp('Conor Cy App', 'Table App Description')
|
|
||||||
cy.navigateToFrontend()
|
|
||||||
})
|
|
||||||
|
|
||||||
it('Should successfully create a screen', () => {
|
|
||||||
cy.createScreen("test Screen", "/test")
|
|
||||||
})
|
|
||||||
})
|
|
|
@ -3,15 +3,12 @@
|
||||||
// 2. Initialises using `.budibase`
|
// 2. Initialises using `.budibase`
|
||||||
// 3. Runs the server using said folder
|
// 3. Runs the server using said folder
|
||||||
|
|
||||||
const rimraf = require("rimraf")
|
|
||||||
const { join, resolve } = require("path")
|
const { join, resolve } = require("path")
|
||||||
const initialiseBudibase = require("../../server/src/utilities/initialiseBudibase")
|
const initialiseBudibase = require("../../server/src/utilities/initialiseBudibase")
|
||||||
const cypressConfig = require("../cypress.json")
|
const cypressConfig = require("../cypress.json")
|
||||||
|
|
||||||
const homedir = join(require("os").homedir(), ".budibase")
|
const homedir = join(require("os").homedir(), ".budibase")
|
||||||
|
|
||||||
rimraf.sync(homedir)
|
|
||||||
|
|
||||||
process.env.BUDIBASE_API_KEY = "6BE826CB-6B30-4AEC-8777-2E90464633DE"
|
process.env.BUDIBASE_API_KEY = "6BE826CB-6B30-4AEC-8777-2E90464633DE"
|
||||||
process.env.NODE_ENV = "cypress"
|
process.env.NODE_ENV = "cypress"
|
||||||
process.env.ENABLE_ANALYTICS = "false"
|
process.env.ENABLE_ANALYTICS = "false"
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
||||||
|
|
||||||
Cypress.Commands.add("createApp", name => {
|
Cypress.Commands.add("createApp", name => {
|
||||||
cy.deleteApp(name)
|
|
||||||
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
cy.contains("Create New Web App").click()
|
cy.contains("Create New Web App").click()
|
||||||
cy.get("body")
|
cy.get("body")
|
||||||
|
@ -72,6 +71,12 @@ Cypress.Commands.add("deleteApp", name => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("createTestApp", () => {
|
||||||
|
const appName = "Cypress Tests"
|
||||||
|
cy.deleteApp(appName)
|
||||||
|
cy.createApp(appName, "This app is used for Cypress testing.")
|
||||||
|
})
|
||||||
|
|
||||||
Cypress.Commands.add("createTestTableWithData", () => {
|
Cypress.Commands.add("createTestTableWithData", () => {
|
||||||
cy.createTable("dog")
|
cy.createTable("dog")
|
||||||
cy.addColumn("dog", "name", "Text")
|
cy.addColumn("dog", "name", "Text")
|
||||||
|
|
Loading…
Reference in New Issue