diff --git a/e2e-tests/cypress.config.js b/e2e-tests/cypress.config.js index e0dcc81d3..74b9fd3f1 100644 --- a/e2e-tests/cypress.config.js +++ b/e2e-tests/cypress.config.js @@ -25,6 +25,9 @@ module.exports = defineConfig({ case 'oauth': serverProcess = exec('yarn start:oauth'); break; + case 'browse-data': + serverProcess = exec('yarn start:browse-data'); + break; } await waitOn({ resources: ['http://localhost:3000'] }); diff --git a/e2e-tests/cypress/e2e/browse-data.cy.js b/e2e-tests/cypress/e2e/browse-data.cy.js new file mode 100644 index 000000000..b6ad7ea3e --- /dev/null +++ b/e2e-tests/cypress/e2e/browse-data.cy.js @@ -0,0 +1,11 @@ +describe('Data browser data', () => { + it('Load table data', () => { + cy.visit('http://localhost:3000'); + + cy.contains('MySql-connection').click(); + cy.contains('Chinook').click(); + cy.contains('Album').click(); + cy.contains('Let There Be Rock'); + cy.contains('Rows: 347'); + }); +}); diff --git a/e2e-tests/env/browse-data/.env b/e2e-tests/env/browse-data/.env new file mode 100644 index 000000000..3e302d325 --- /dev/null +++ b/e2e-tests/env/browse-data/.env @@ -0,0 +1,8 @@ +CONNECTIONS=mysql + +LABEL_mysql=MySql-connection +SERVER_mysql=localhost +USER_mysql=root +PASSWORD_mysql=Pwd2020Db +PORT_mysql=16004 +ENGINE_mysql=mysql@dbgate-plugin-mysql diff --git a/e2e-tests/init/browse-data.js b/e2e-tests/init/browse-data.js new file mode 100644 index 000000000..e76e1d85d --- /dev/null +++ b/e2e-tests/init/browse-data.js @@ -0,0 +1,43 @@ +const dbgateApi = require('dbgate-api'); +dbgateApi.initializeApiEnvironment(); +const dbgatePluginMysql = require('dbgate-plugin-mysql'); +dbgateApi.registerPlugins(dbgatePluginMysql); +const dbgatePluginPostgres = require('dbgate-plugin-postgres'); +dbgateApi.registerPlugins(dbgatePluginPostgres); + +async function run() { + await dbgateApi.executeQuery({ + connection: { + server: process.env.SERVER_mysql, + user: process.env.USER_mysql, + password: process.env.PASSWORD_mysql, + port: process.env.PORT_mysql, + engine: 'mysql@dbgate-plugin-mysql', + }, + sql: 'drop database if exists Chinook', + }); + + await dbgateApi.executeQuery({ + connection: { + server: process.env.SERVER_mysql, + user: process.env.USER_mysql, + password: process.env.PASSWORD_mysql, + port: process.env.PORT_mysql, + engine: 'mysql@dbgate-plugin-mysql', + }, + sql: 'create database Chinook', + }); + + await dbgateApi.importDatabase({ + connection: { + server: process.env.SERVER_mysql, + user: process.env.USER_mysql, + password: process.env.PASSWORD_mysql, + port: process.env.PORT_mysql, + engine: 'mysql@dbgate-plugin-mysql', + }, + inputFile: '../data/Chinook-mysql.sql', + }); +} + +dbgateApi.runScript(run); diff --git a/e2e-tests/package.json b/e2e-tests/package.json index 260a742a9..f278896e4 100644 --- a/e2e-tests/package.json +++ b/e2e-tests/package.json @@ -18,12 +18,14 @@ "cy:run:add-connection": "cypress run --spec cypress/e2e/add-connection.cy.js", "cy:run:portal": "cypress run --spec cypress/e2e/portal.cy.js", "cy:run:oauth": "cypress run --spec cypress/e2e/oauth.cy.js", + "cy:run:browse-data": "cypress run --spec cypress/e2e/browse-data.cy.js", "start:add-connection": "cd .. && node packer/build/bundle.js --listen-api --run-e2e-tests", "start:portal": "cd .. && env-cmd -f e2e-tests/env/portal/.env node e2e-tests/init/portal.js && env-cmd -f e2e-tests/env/portal/.env node packer/build/bundle.js --listen-api --run-e2e-tests", "start:oauth": "cd .. && env-cmd -f e2e-tests/env/oauth/.env node packer/build/bundle.js --listen-api --run-e2e-tests", + "start:browse-data": "cd .. && env-cmd -f e2e-tests/env/browse-data/.env node packer/build/bundle.js --listen-api --run-e2e-tests", - "test": "start-server-and-test start:add-connection http://localhost:3000 cy:run:add-connection && start-server-and-test start:portal http://localhost:3000 cy:run:portal && start-server-and-test start:oauth http://localhost:3000 cy:run:oauth", + "test": "start-server-and-test start:add-connection http://localhost:3000 cy:run:add-connection && start-server-and-test start:portal http://localhost:3000 cy:run:portal && start-server-and-test start:oauth http://localhost:3000 cy:run:oauth && start-server-and-test start:browse-data http://localhost:3000 cy:run:browse-data", "test:ci": "yarn test" } }