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 @@
}
-
+