From d79f82e9b8bcde225952abae40e1ab8f60071c9e Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 24 Feb 2025 13:26:32 +0100 Subject: [PATCH 01/16] SYNC: fixed test --- e2e-tests/cypress/e2e/multi-sql.cy.js | 40 +++++++++++++++++++ e2e-tests/cypress/e2e/multi-sql.js | 16 -------- e2e-tests/init/multi-sql.js | 10 ++--- e2e-tests/package.json | 2 +- packages/web/src/tabs/QueryTab.svelte | 5 ++- packages/web/src/widgets/SqlObjectList.svelte | 13 +++++- .../src/widgets/WidgetsInnerContainer.svelte | 2 +- 7 files changed, 61 insertions(+), 27 deletions(-) create mode 100644 e2e-tests/cypress/e2e/multi-sql.cy.js delete mode 100644 e2e-tests/cypress/e2e/multi-sql.js diff --git a/e2e-tests/cypress/e2e/multi-sql.cy.js b/e2e-tests/cypress/e2e/multi-sql.cy.js new file mode 100644 index 000000000..1074ef668 --- /dev/null +++ b/e2e-tests/cypress/e2e/multi-sql.cy.js @@ -0,0 +1,40 @@ +Cypress.on('uncaught:exception', (err, runnable) => { + // if the error message matches the one about WorkerGlobalScope importScripts + if (err.message.includes("Failed to execute 'importScripts' on 'WorkerGlobalScope'")) { + // return false to let Cypress know we intentionally want to ignore this error + return false; + } + // otherwise let Cypress throw the error +}); + +beforeEach(() => { + cy.visit('http://localhost:3000'); + cy.viewport(1250, 900); +}); + +describe('Data browser data', () => { + it('Transaction', () => { + cy.contains('MySql-connection').click(); + cy.contains('my_guitar_shop').click(); + cy.testid('TabsPanel_buttonNewQuery').click(); + cy.wait(1000); + cy.get('body').type("INSERT INTO categories (category_id, category_name) VALUES (5, 'test');"); + cy.testid('QueryTab_beginTransactionButton').click(); + cy.contains('Query execution finished'); + cy.testid('QueryTab_executeButton').click(); + cy.contains('Query execution finished'); + + cy.testid('SqlObjectList_container').contains('categories').click(); + cy.contains('Guitars').click(); + cy.testid('TableDataTab_refreshGrid').click(); + cy.contains('Rows: 4'); + + cy.contains('Query #1').click(); + cy.testid('QueryTab_commitTransactionButton').click(); + cy.contains('Query execution finished'); + cy.testid('SqlObjectList_container').contains('categories').click(); + cy.contains('Guitars').click(); + cy.testid('TableDataTab_refreshGrid').click(); + cy.contains('Rows: 5'); + }); +}); diff --git a/e2e-tests/cypress/e2e/multi-sql.js b/e2e-tests/cypress/e2e/multi-sql.js deleted file mode 100644 index 055ee57f4..000000000 --- a/e2e-tests/cypress/e2e/multi-sql.js +++ /dev/null @@ -1,16 +0,0 @@ -Cypress.on('uncaught:exception', (err, runnable) => { - // if the error message matches the one about WorkerGlobalScope importScripts - if (err.message.includes("Failed to execute 'importScripts' on 'WorkerGlobalScope'")) { - // return false to let Cypress know we intentionally want to ignore this error - return false; - } - // otherwise let Cypress throw the error -}); - -beforeEach(() => { - cy.visit('http://localhost:3000'); - cy.viewport(1250, 900); -}); - -describe('Data browser data', () => { -}); diff --git a/e2e-tests/init/multi-sql.js b/e2e-tests/init/multi-sql.js index 0b41f64cc..94507f372 100644 --- a/e2e-tests/init/multi-sql.js +++ b/e2e-tests/init/multi-sql.js @@ -21,7 +21,7 @@ async function createDb(connection, dropDbSql, createDbSql) { await dbgateApi.importDbFromFolder({ connection: { ...connection, - database: 'my_quitar_shop', + database: 'my_guitar_shop', }, folder: path.resolve(path.join(__dirname, '../data/my-guitar-shop')), }); @@ -36,8 +36,8 @@ async function run() { port: process.env.PORT_postgres, engine: 'postgres@dbgate-plugin-postgres', }, - 'drop database if exists my_quitar_shop', - 'create database my_quitar_shop' + 'drop database if exists my_guitar_shop', + 'create database my_guitar_shop' ); await createDb( @@ -48,8 +48,8 @@ async function run() { port: process.env.PORT_mysql, engine: 'mysql@dbgate-plugin-mysql', }, - 'drop database if exists my_quitar_shop', - 'create database my_quitar_shop' + 'drop database if exists my_guitar_shop', + 'create database my_guitar_shop' ); } diff --git a/e2e-tests/package.json b/e2e-tests/package.json index 619c37819..43ff95b1b 100644 --- a/e2e-tests/package.json +++ b/e2e-tests/package.json @@ -36,7 +36,7 @@ "test:team": "start-server-and-test start:team http://localhost:3000 cy:run:team", "test:multi-sql": "start-server-and-test start:multi-sql http://localhost:3000 cy:run:multi-sql", - "test": "yarn test:add-connection && yarn test:portal && yarn test:oauth && yarn test:browse-data && yarn test:team && yaran test:multi-sql", + "test": "yarn test:add-connection && yarn test:portal && yarn test:oauth && yarn test:browse-data && yarn test:team && yarn test:multi-sql", "test:ci": "yarn test" }, "dependencies": {} diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte index 49551b5a0..3205153ee 100644 --- a/packages/web/src/tabs/QueryTab.svelte +++ b/packages/web/src/tabs/QueryTab.svelte @@ -309,6 +309,9 @@ executeNumber++; visibleResultTabs = true; + busy = true; + timerLabel.start(); + let sesid = sessionId; if (!sesid) { const resp = await apiCall('sessions/create', { @@ -318,8 +321,6 @@ sesid = resp.sesid; sessionId = sesid; } - busy = true; - timerLabel.start(); await apiCall('sessions/execute-query', { sesid, sql, diff --git a/packages/web/src/widgets/SqlObjectList.svelte b/packages/web/src/widgets/SqlObjectList.svelte index e15d46732..09fd7e748 100644 --- a/packages/web/src/widgets/SqlObjectList.svelte +++ b/packages/web/src/widgets/SqlObjectList.svelte @@ -227,7 +227,12 @@ {#if !filter} {/if} - + @@ -245,7 +250,11 @@ {/if} - + {#if ($status && ($status.name == 'pending' || $status.name == 'checkStructure' || $status.name == 'loadStructure') && $objects) || !$objects} {:else} diff --git a/packages/web/src/widgets/WidgetsInnerContainer.svelte b/packages/web/src/widgets/WidgetsInnerContainer.svelte index 262c1856c..c727b45b2 100644 --- a/packages/web/src/widgets/WidgetsInnerContainer.svelte +++ b/packages/web/src/widgets/WidgetsInnerContainer.svelte @@ -8,7 +8,7 @@ } -
+