Attempting to fix the issue with 4001, this updates the cypress tests so that it is easier to change the port on which it runs as well as updating the electron usage of the app to use port 0 (an ephermeral port).

This commit is contained in:
mike12345567 2021-02-03 16:09:48 +00:00
parent 12eb36175d
commit 68f68c1e26
17 changed files with 53 additions and 38 deletions

View File

@ -1,5 +1,8 @@
{
"baseUrl": "http://localhost:4001/_builder/",
"baseUrl": "http://localhost:4005/_builder/",
"video": true,
"projectId": "bmbemn"
"projectId": "bmbemn",
"env": {
"PORT": "4005"
}
}

View File

@ -2,7 +2,7 @@ context('Create an Application', () => {
beforeEach(() => {
cy.server()
cy.visit('localhost:4001/_builder')
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
})
// https://on.cypress.io/interacting-with-elements
@ -11,7 +11,7 @@ context('Create an Application', () => {
// https://on.cypress.io/type
cy.createApp('My Cool App', 'This is a description')
cy.visit('localhost:4001/_builder')
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
cy.contains('My Cool App').should('exist')
})

View File

@ -1,7 +1,7 @@
context("Create a automation", () => {
before(() => {
cy.server()
cy.visit("localhost:4001/_builder")
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
cy.createApp(
"Automation Test App",

View File

@ -1,6 +1,6 @@
xcontext('Create a Binding', () => {
before(() => {
cy.visit('localhost:4001/_builder')
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
cy.createApp('Binding App', 'Binding App Description')
cy.navigateToFrontend()
})

View File

@ -1,7 +1,7 @@
xcontext("Create Components", () => {
before(() => {
cy.server()
cy.visit("localhost:4001/_builder")
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
// https://on.cypress.io/type
cy.createApp("Table App", "Table App Description")
cy.createTable("dog", "name", "age")

View File

@ -1,6 +1,6 @@
context("Create a Table", () => {
before(() => {
cy.visit("localhost:4001/_builder")
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
cy.createApp("Table App", "Table App Description")
})

View File

@ -2,7 +2,7 @@ context('Create a User', () => {
before(() => {
cy.server()
cy.visit('localhost:4001/_builder')
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
// https://on.cypress.io/type
cy.createApp('User App', 'This app is used to test user creation')
})

View File

@ -1,6 +1,6 @@
context("Create a View", () => {
before(() => {
cy.visit("localhost:4001/_builder")
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
cy.createApp("View App", "View App Description")
cy.createTable("data")
cy.addColumn("data", "group", "Text")

View File

@ -2,7 +2,7 @@
context('Screen Tests', () => {
before(() => {
cy.server()
cy.visit('localhost:4001/_builder')
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
cy.createApp('Conor Cy App', 'Table App Description')
cy.navigateToFrontend()
})

View File

@ -7,6 +7,7 @@ const rimraf = require("rimraf")
const { join, resolve } = require("path")
// const run = require("../../cli/src/commands/run/runHandler")
const initialiseBudibase = require("../../server/src/utilities/initialiseBudibase")
const cypressConfig = require("../cypress.json")
const homedir = join(require("os").homedir(), ".budibase")
@ -15,6 +16,7 @@ rimraf.sync(homedir)
process.env.BUDIBASE_API_KEY = "6BE826CB-6B30-4AEC-8777-2E90464633DE"
process.env.NODE_ENV = "cypress"
process.env.ENABLE_ANALYTICS = "false"
process.env.PORT = cypressConfig.env.PORT
// Stop info logs polluting test outputs
process.env.LOG_LEVEL = "error"

View File

@ -14,8 +14,8 @@
"cy:run": "cypress run",
"cy:open": "cypress open",
"cy:run:ci": "cypress run --browser electron --record --key f308590b-6070-41af-b970-794a3823d451",
"cy:test": "start-server-and-test cy:setup http://localhost:4001/_builder cy:run",
"cy:ci": "start-server-and-test cy:setup http://localhost:4001/_builder cy:run:ci"
"cy:test": "start-server-and-test cy:setup http://localhost:4005/_builder cy:run",
"cy:ci": "start-server-and-test cy:setup http://localhost:4005/_builder cy:run:ci"
},
"jest": {
"globals": {

View File

@ -13,7 +13,8 @@
if (production) {
return `${appUrl}/${uri}`
} else {
return `http://localhost:4001/${uri}`
return `${window.location.origin}/${uri}`
}
}

View File

@ -8,9 +8,6 @@ CLIENT_ID={{clientId}}
# used to create cookie hashes
JWT_SECRET={{cookieKey1}}
# port to run http server on
PORT=4001
# error level for koa-pino
LOG_LEVEL=info

View File

@ -36,7 +36,7 @@
"test:integration": "jest routes --runInBand",
"test:watch": "jest --watch",
"run:docker": "node src/index",
"dev:builder": "nodemon src/index.js",
"dev:builder": "PORT=4001 nodemon src/index.js",
"electron": "electron src/electron.js",
"build:electron": "electron-builder --dir",
"publish:electron": "electron-builder -mwl --publish always",

View File

@ -50,8 +50,10 @@ destroyable(server)
server.on("close", () => console.log("Server Closed"))
module.exports = server.listen(env.PORT || 4001, async () => {
module.exports = server.listen(env.PORT || 0, async () => {
console.log(`Budibase running on ${JSON.stringify(server.address())}`)
env._set("PORT", server.address().port)
eventEmitter.emitPort(env.PORT)
automations.init()
if (env.SELF_HOSTED) {
await selfhost.init()

View File

@ -7,6 +7,7 @@ const { existsSync } = require("fs-extra")
const initialiseBudibase = require("./utilities/initialiseBudibase")
const { budibaseAppsDir } = require("./utilities/budibaseDir")
const { openNewGitHubIssue, debugInfo } = require("electron-util")
const eventEmitter = require("./events")
const budibaseDir = budibaseAppsDir()
const envFile = join(budibaseDir, ".env")
@ -17,7 +18,11 @@ async function startApp() {
}
// evict environment from cache, so it reloads when next asked
delete require.cache[require.resolve("./environment")]
// store the port incase its going to get overridden
const port = process.env.PORT
require("dotenv").config({ path: envFile })
// overwrite the port - don't want to use dotenv for the port
require("./environment")._set("PORT", port)
unhandled({
showDialog: true,
@ -34,9 +39,6 @@ async function startApp() {
},
})
const APP_URL = "http://localhost:4001/_builder"
const APP_TITLE = "Budibase Builder"
let win
function handleRedirect(e, url) {
@ -46,22 +48,26 @@ async function startApp() {
async function createWindow() {
app.server = require("./app")
win = new BrowserWindow({
width: 1920,
height: 1080,
icon: join(__dirname, "..", "build", "icons", "512x512.png"),
})
win.setTitle(APP_TITLE)
win.loadURL(APP_URL)
if (isDev) {
win.webContents.openDevTools()
} else {
autoUpdater.checkForUpdatesAndNotify()
}
eventEmitter.on("internal:port", port => {
const APP_URL = `http://localhost:${port}/_builder`
const APP_TITLE = "Budibase Builder"
win = new BrowserWindow({
width: 1920,
height: 1080,
icon: join(__dirname, "..", "build", "icons", "512x512.png"),
})
win.setTitle(APP_TITLE)
win.loadURL(APP_URL)
if (isDev) {
win.webContents.openDevTools()
} else {
autoUpdater.checkForUpdatesAndNotify()
}
// open _blank in default browser
win.webContents.on("new-window", handleRedirect)
win.webContents.on("will-navigate", handleRedirect)
// open _blank in default browser
win.webContents.on("new-window", handleRedirect)
win.webContents.on("will-navigate", handleRedirect)
})
}
app.whenReady().then(createWindow)

View File

@ -19,6 +19,10 @@ class BudibaseEmitter extends EventEmitter {
emitTable(eventName, appId, table = null) {
tableEmission({ emitter: this, eventName, appId, table })
}
emitPort(portNumber) {
this.emit("internal:port", portNumber)
}
}
const emitter = new BudibaseEmitter()