diff --git a/e2e-tests/cypress.config.js b/e2e-tests/cypress.config.js index 720eaff2a..eb1e82c7e 100644 --- a/e2e-tests/cypress.config.js +++ b/e2e-tests/cypress.config.js @@ -1,34 +1,14 @@ const { defineConfig } = require('cypress'); const { clearDataWithBackup } = require('./e2eTestTools'); -const { exec } = require('child_process'); -const waitOn = require('wait-on'); module.exports = defineConfig({ e2e: { setupNodeEvents(on, config) { // implement node event listeners here - let serverProcess; on('before:spec', async details => { - console.log('******** BEFORE RUN ****************'); clearDataWithBackup(); - - serverProcess = exec('yarn start'); - await waitOn({ resources: ['http://localhost:3000'] }); - serverProcess.stdout.on('data', data => { - console.log(data.toString()); - }); - serverProcess.stderr.on('data', data => { - console.error(data.toString()); - }); - }); - - on('after:spec', () => { - console.log('******** AFTER RUN ****************', serverProcess); - if (serverProcess) { - console.log('Stopping local server...'); - serverProcess.kill(); - } + // await axios.default.post('http://localhost:3000/connections/reload-connection-list', {}); }); }, }, diff --git a/e2e-tests/package.json b/e2e-tests/package.json index b2e69721c..8e3b6b655 100644 --- a/e2e-tests/package.json +++ b/e2e-tests/package.json @@ -4,6 +4,7 @@ "main": "index.js", "license": "GPL", "devDependencies": { + "axios": "^1.7.9", "cross-env": "^7.0.3", "cypress": "^13.16.1", "start-server-and-test": "^2.0.8" @@ -12,7 +13,7 @@ "cy:open": "cypress open --config experimentalInteractiveRunEvents=true", "cy:run": "cypress run", "cy:run:ci": "cross-env CI=true cypress run", - "start": "cd .. && node packer/build/bundle.js --listen-api --run-packer-build", + "start": "cd .. && node packer/build/bundle.js --listen-api --run-e2e-tests", "test:ci": "start-server-and-test start http://localhost:3000 cy:run:ci", "test": "start-server-and-test start http://localhost:3000 cy:run" } diff --git a/e2e-tests/yarn.lock b/e2e-tests/yarn.lock index 316dbd90f..4c8821e33 100644 --- a/e2e-tests/yarn.lock +++ b/e2e-tests/yarn.lock @@ -176,7 +176,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== -axios@^1.7.7: +axios@^1.7.7, axios@^1.7.9: version "1.7.9" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a" integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== diff --git a/packages/api/src/controllers/auth.js b/packages/api/src/controllers/auth.js index 509d4c9c1..187cc0130 100644 --- a/packages/api/src/controllers/auth.js +++ b/packages/api/src/controllers/auth.js @@ -43,6 +43,7 @@ function authMiddleware(req, res, next) { '/connections/dblogin-app', '/connections/dblogin-auth', '/connections/dblogin-auth-token', + '/connections/reload-connection-list', ]; // console.log('********************* getAuthProvider()', getAuthProvider()); diff --git a/packages/api/src/controllers/connections.js b/packages/api/src/controllers/connections.js index 94a9fe3a7..ccddc32f5 100644 --- a/packages/api/src/controllers/connections.js +++ b/packages/api/src/controllers/connections.js @@ -510,4 +510,10 @@ module.exports = { } return null; }, + + reloadConnectionList_meta: true, + async reloadConnectionList() { + if (portalConnections) return; + await this.datastore.unload(); + }, }; diff --git a/packages/api/src/main.js b/packages/api/src/main.js index cc8477e40..d262f552f 100644 --- a/packages/api/src/main.js +++ b/packages/api/src/main.js @@ -78,7 +78,7 @@ function start() { app.use(getExpressPath('/'), express.static('/home/dbgate-docker/public')); } else if (platformInfo.isAwsUbuntuLayout) { app.use(getExpressPath('/'), express.static('/home/ubuntu/build/public')); - } else if (processArgs.runPackerBuild) { + } else if (processArgs.runE2eTests) { app.use(getExpressPath('/'), express.static(path.resolve('packer/build/public'))); } else if (platformInfo.isNpmDist) { app.use( diff --git a/packages/api/src/utility/JsonLinesDatabase.js b/packages/api/src/utility/JsonLinesDatabase.js index 026692c54..6a305fb80 100644 --- a/packages/api/src/utility/JsonLinesDatabase.js +++ b/packages/api/src/utility/JsonLinesDatabase.js @@ -23,6 +23,12 @@ class JsonLinesDatabase { await fs.writeFile(this.filename, this.data.map(x => JSON.stringify(x)).join('\n')); } + async unload() { + this.data = []; + this.loadedOk = false; + this.loadPerformed = false; + } + async _ensureLoaded() { if (!this.loadPerformed) { await lock.acquire('reader', async () => { diff --git a/packages/api/src/utility/directories.js b/packages/api/src/utility/directories.js index 281aa7fd5..b5d4ab72a 100644 --- a/packages/api/src/utility/directories.js +++ b/packages/api/src/utility/directories.js @@ -96,7 +96,7 @@ function packagedPluginsDir() { // return path.resolve(__dirname, '../../plugins'); // } } - if (processArgs.runPackerBuild) { + if (processArgs.runE2eTests) { return path.resolve('packer/build/plugins'); } return null; diff --git a/packages/api/src/utility/processArgs.js b/packages/api/src/utility/processArgs.js index 66a97ade7..a2dd45189 100644 --- a/packages/api/src/utility/processArgs.js +++ b/packages/api/src/utility/processArgs.js @@ -14,7 +14,7 @@ const workspaceDir = getNamedArg('--workspace-dir'); const processDisplayName = getNamedArg('--process-display-name'); const listenApi = process.argv.includes('--listen-api'); const listenApiChild = process.argv.includes('--listen-api-child') || listenApi; -const runPackerBuild = process.argv.includes('--run-packer-build'); +const runE2eTests = process.argv.includes('--run-e2e-tests'); function getPassArgs() { const res = []; @@ -24,8 +24,8 @@ function getPassArgs() { if (listenApiChild) { res.push('listen-api-child'); } - if (runPackerBuild) { - res.push('--run-packer-build'); + if (runE2eTests) { + res.push('--run-e2e-tests'); } return res; } @@ -40,5 +40,5 @@ module.exports = { listenApi, listenApiChild, processDisplayName, - runPackerBuild, + runE2eTests, };