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:
parent
e283dc0bb1
commit
a88ce0d608
|
@ -1,5 +1,8 @@
|
||||||
{
|
{
|
||||||
"baseUrl": "http://localhost:4001/_builder/",
|
"baseUrl": "http://localhost:4005/_builder/",
|
||||||
"video": true,
|
"video": true,
|
||||||
"projectId": "bmbemn"
|
"projectId": "bmbemn",
|
||||||
|
"env": {
|
||||||
|
"PORT": "4005"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ context('Create an Application', () => {
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
cy.server()
|
cy.server()
|
||||||
cy.visit('localhost:4001/_builder')
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
})
|
})
|
||||||
|
|
||||||
// https://on.cypress.io/interacting-with-elements
|
// https://on.cypress.io/interacting-with-elements
|
||||||
|
@ -11,7 +11,7 @@ context('Create an Application', () => {
|
||||||
// https://on.cypress.io/type
|
// https://on.cypress.io/type
|
||||||
cy.createApp('My Cool App', 'This is a description')
|
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')
|
cy.contains('My Cool App').should('exist')
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
context("Create a automation", () => {
|
context("Create a automation", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.server()
|
cy.server()
|
||||||
cy.visit("localhost:4001/_builder")
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
|
|
||||||
cy.createApp(
|
cy.createApp(
|
||||||
"Automation Test App",
|
"Automation Test App",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
xcontext('Create a Binding', () => {
|
xcontext('Create a Binding', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.visit('localhost:4001/_builder')
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
cy.createApp('Binding App', 'Binding App Description')
|
cy.createApp('Binding App', 'Binding App Description')
|
||||||
cy.navigateToFrontend()
|
cy.navigateToFrontend()
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
xcontext("Create Components", () => {
|
xcontext("Create Components", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.server()
|
cy.server()
|
||||||
cy.visit("localhost:4001/_builder")
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
// https://on.cypress.io/type
|
// https://on.cypress.io/type
|
||||||
cy.createApp("Table App", "Table App Description")
|
cy.createApp("Table App", "Table App Description")
|
||||||
cy.createTable("dog", "name", "age")
|
cy.createTable("dog", "name", "age")
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
context("Create a Table", () => {
|
context("Create a Table", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.visit("localhost:4001/_builder")
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
cy.createApp("Table App", "Table App Description")
|
cy.createApp("Table App", "Table App Description")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ context('Create a User', () => {
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.server()
|
cy.server()
|
||||||
cy.visit('localhost:4001/_builder')
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
// https://on.cypress.io/type
|
// https://on.cypress.io/type
|
||||||
cy.createApp('User App', 'This app is used to test user creation')
|
cy.createApp('User App', 'This app is used to test user creation')
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
context("Create a View", () => {
|
context("Create a View", () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.visit("localhost:4001/_builder")
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
cy.createApp("View App", "View App Description")
|
cy.createApp("View App", "View App Description")
|
||||||
cy.createTable("data")
|
cy.createTable("data")
|
||||||
cy.addColumn("data", "group", "Text")
|
cy.addColumn("data", "group", "Text")
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
context('Screen Tests', () => {
|
context('Screen Tests', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.server()
|
cy.server()
|
||||||
cy.visit('localhost:4001/_builder')
|
cy.visit(`localhost:${Cypress.env("PORT")}/_builder`)
|
||||||
cy.createApp('Conor Cy App', 'Table App Description')
|
cy.createApp('Conor Cy App', 'Table App Description')
|
||||||
cy.navigateToFrontend()
|
cy.navigateToFrontend()
|
||||||
})
|
})
|
||||||
|
|
|
@ -7,6 +7,7 @@ const rimraf = require("rimraf")
|
||||||
const { join, resolve } = require("path")
|
const { join, resolve } = require("path")
|
||||||
// const run = require("../../cli/src/commands/run/runHandler")
|
// const run = require("../../cli/src/commands/run/runHandler")
|
||||||
const initialiseBudibase = require("../../server/src/utilities/initialiseBudibase")
|
const initialiseBudibase = require("../../server/src/utilities/initialiseBudibase")
|
||||||
|
const cypressConfig = require("../cypress.json")
|
||||||
|
|
||||||
const homedir = join(require("os").homedir(), ".budibase")
|
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.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"
|
||||||
|
process.env.PORT = cypressConfig.env.PORT
|
||||||
|
|
||||||
// Stop info logs polluting test outputs
|
// Stop info logs polluting test outputs
|
||||||
process.env.LOG_LEVEL = "error"
|
process.env.LOG_LEVEL = "error"
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
"cy:run": "cypress run",
|
"cy:run": "cypress run",
|
||||||
"cy:open": "cypress open",
|
"cy:open": "cypress open",
|
||||||
"cy:run:ci": "cypress run --browser electron --record --key f308590b-6070-41af-b970-794a3823d451",
|
"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:test": "start-server-and-test cy:setup http://localhost:4005/_builder cy:run",
|
||||||
"cy:ci": "start-server-and-test cy:setup http://localhost:4001/_builder cy:run:ci"
|
"cy:ci": "start-server-and-test cy:setup http://localhost:4005/_builder cy:run:ci"
|
||||||
},
|
},
|
||||||
"jest": {
|
"jest": {
|
||||||
"globals": {
|
"globals": {
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
if (production) {
|
if (production) {
|
||||||
return `${appUrl}/${uri}`
|
return `${appUrl}/${uri}`
|
||||||
} else {
|
} else {
|
||||||
return `http://localhost:4001/${uri}`
|
|
||||||
|
return `${window.location.origin}/${uri}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,10 @@ CLIENT_ID={{clientId}}
|
||||||
# used to create cookie hashes
|
# used to create cookie hashes
|
||||||
JWT_SECRET={{cookieKey1}}
|
JWT_SECRET={{cookieKey1}}
|
||||||
|
|
||||||
# port to run http server on
|
|
||||||
PORT=4001
|
|
||||||
|
|
||||||
# error level for koa-pino
|
# error level for koa-pino
|
||||||
LOG_LEVEL=info
|
LOG_LEVEL=info
|
||||||
|
|
||||||
DEPLOYMENT_CREDENTIALS_URL="https://dt4mpwwap8.execute-api.eu-west-1.amazonaws.com/prod/"
|
DEPLOYMENT_CREDENTIALS_URL="https://dt4mpwwap8.execute-api.eu-west-1.amazonaws.com/prod/"
|
||||||
DEPLOYMENT_DB_URL="https://couchdb.budi.live:5984"
|
DEPLOYMENT_DB_URL="https://couchdb.budi.live:5984"
|
||||||
SENTRY_DSN=https://a34ae347621946bf8acded18e5b7d4b8@o420233.ingest.sentry.io/5338131
|
SENTRY_DSN=https://a34ae347621946bf8acded18e5b7d4b8@o420233.ingest.sentry.io/5338131
|
||||||
ENABLE_ANALYTICS="true"
|
ENABLE_ANALYTICS="true"
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
"test:integration": "jest routes --runInBand",
|
"test:integration": "jest routes --runInBand",
|
||||||
"test:watch": "jest --watch",
|
"test:watch": "jest --watch",
|
||||||
"run:docker": "node src/index",
|
"run:docker": "node src/index",
|
||||||
"dev:builder": "nodemon src/index.js",
|
"dev:builder": "PORT=4001 nodemon src/index.js",
|
||||||
"electron": "electron src/electron.js",
|
"electron": "electron src/electron.js",
|
||||||
"build:electron": "electron-builder --dir",
|
"build:electron": "electron-builder --dir",
|
||||||
"publish:electron": "electron-builder -mwl --publish always",
|
"publish:electron": "electron-builder -mwl --publish always",
|
||||||
|
|
|
@ -50,8 +50,10 @@ destroyable(server)
|
||||||
|
|
||||||
server.on("close", () => console.log("Server Closed"))
|
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())}`)
|
console.log(`Budibase running on ${JSON.stringify(server.address())}`)
|
||||||
|
env._set("PORT", server.address().port)
|
||||||
|
eventEmitter.emitPort(env.PORT)
|
||||||
automations.init()
|
automations.init()
|
||||||
if (env.SELF_HOSTED) {
|
if (env.SELF_HOSTED) {
|
||||||
await selfhost.init()
|
await selfhost.init()
|
||||||
|
|
|
@ -7,6 +7,7 @@ const { existsSync } = require("fs-extra")
|
||||||
const initialiseBudibase = require("./utilities/initialiseBudibase")
|
const initialiseBudibase = require("./utilities/initialiseBudibase")
|
||||||
const { budibaseAppsDir } = require("./utilities/budibaseDir")
|
const { budibaseAppsDir } = require("./utilities/budibaseDir")
|
||||||
const { openNewGitHubIssue, debugInfo } = require("electron-util")
|
const { openNewGitHubIssue, debugInfo } = require("electron-util")
|
||||||
|
const eventEmitter = require("./events")
|
||||||
|
|
||||||
const budibaseDir = budibaseAppsDir()
|
const budibaseDir = budibaseAppsDir()
|
||||||
const envFile = join(budibaseDir, ".env")
|
const envFile = join(budibaseDir, ".env")
|
||||||
|
@ -17,7 +18,11 @@ async function startApp() {
|
||||||
}
|
}
|
||||||
// evict environment from cache, so it reloads when next asked
|
// evict environment from cache, so it reloads when next asked
|
||||||
delete require.cache[require.resolve("./environment")]
|
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 })
|
require("dotenv").config({ path: envFile })
|
||||||
|
// overwrite the port - don't want to use dotenv for the port
|
||||||
|
require("./environment")._set("PORT", port)
|
||||||
|
|
||||||
unhandled({
|
unhandled({
|
||||||
showDialog: true,
|
showDialog: true,
|
||||||
|
@ -34,9 +39,6 @@ async function startApp() {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const APP_URL = "http://localhost:4001/_builder"
|
|
||||||
const APP_TITLE = "Budibase Builder"
|
|
||||||
|
|
||||||
let win
|
let win
|
||||||
|
|
||||||
function handleRedirect(e, url) {
|
function handleRedirect(e, url) {
|
||||||
|
@ -46,22 +48,26 @@ async function startApp() {
|
||||||
|
|
||||||
async function createWindow() {
|
async function createWindow() {
|
||||||
app.server = require("./app")
|
app.server = require("./app")
|
||||||
win = new BrowserWindow({
|
eventEmitter.on("internal:port", port => {
|
||||||
width: 1920,
|
const APP_URL = `http://localhost:${port}/_builder`
|
||||||
height: 1080,
|
const APP_TITLE = "Budibase Builder"
|
||||||
icon: join(__dirname, "..", "build", "icons", "512x512.png"),
|
win = new BrowserWindow({
|
||||||
})
|
width: 1920,
|
||||||
win.setTitle(APP_TITLE)
|
height: 1080,
|
||||||
win.loadURL(APP_URL)
|
icon: join(__dirname, "..", "build", "icons", "512x512.png"),
|
||||||
if (isDev) {
|
})
|
||||||
win.webContents.openDevTools()
|
win.setTitle(APP_TITLE)
|
||||||
} else {
|
win.loadURL(APP_URL)
|
||||||
autoUpdater.checkForUpdatesAndNotify()
|
if (isDev) {
|
||||||
}
|
win.webContents.openDevTools()
|
||||||
|
} else {
|
||||||
|
autoUpdater.checkForUpdatesAndNotify()
|
||||||
|
}
|
||||||
|
|
||||||
// open _blank in default browser
|
// open _blank in default browser
|
||||||
win.webContents.on("new-window", handleRedirect)
|
win.webContents.on("new-window", handleRedirect)
|
||||||
win.webContents.on("will-navigate", handleRedirect)
|
win.webContents.on("will-navigate", handleRedirect)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
app.whenReady().then(createWindow)
|
app.whenReady().then(createWindow)
|
||||||
|
|
|
@ -19,6 +19,10 @@ class BudibaseEmitter extends EventEmitter {
|
||||||
emitTable(eventName, appId, table = null) {
|
emitTable(eventName, appId, table = null) {
|
||||||
tableEmission({ emitter: this, eventName, appId, table })
|
tableEmission({ emitter: this, eventName, appId, table })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emitPort(portNumber) {
|
||||||
|
this.emit("internal:port", portNumber)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const emitter = new BudibaseEmitter()
|
const emitter = new BudibaseEmitter()
|
||||||
|
|
Loading…
Reference in New Issue