From 25aafdbebcf3e0d5bb62aa4e0e4795d2e9ad4e32 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Tue, 15 Jul 2025 08:45:42 +0200 Subject: [PATCH] SYNC: chart screenshots for tutorial --- e2e-tests/cypress/e2e/charts.cy.js | 24 +++++++++++++++++++ e2e-tests/init/charts.js | 38 ++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/e2e-tests/cypress/e2e/charts.cy.js b/e2e-tests/cypress/e2e/charts.cy.js index 7fa193907..b5b00019c 100644 --- a/e2e-tests/cypress/e2e/charts.cy.js +++ b/e2e-tests/cypress/e2e/charts.cy.js @@ -24,4 +24,28 @@ describe('Charts', () => { cy.testid('chart-canvas').should($c => expect($c[0].toDataURL()).to.match(/^data:image\/png;base64/)); cy.themeshot('choose-detected-chart'); }); + + it('Two line charts', () => { + cy.contains('MySql-connection').click(); + cy.contains('MyChinook').click(); + cy.testid('TabsPanel_buttonNewQuery').click(); + cy.wait(1000); + cy.get('body').realType('SELECT InvoiceDate, Total from Invoice'); + cy.contains('Execute').click(); + cy.contains('Open chart').click(); + cy.testid('chart-canvas').should($c => expect($c[0].toDataURL()).to.match(/^data:image\/png;base64/)); + cy.themeshot('two-line-charts'); + }); + + it('Invoice naive autodetection', () => { + cy.contains('MySql-connection').click(); + cy.contains('MyChinook').click(); + cy.testid('TabsPanel_buttonNewQuery').click(); + cy.wait(1000); + cy.get('body').realType('SELECT * from Invoice'); + cy.contains('Execute').click(); + cy.contains('Open chart').click(); + cy.testid('chart-canvas').should($c => expect($c[0].toDataURL()).to.match(/^data:image\/png;base64/)); + cy.themeshot('chart-naive-autodetection'); + }); }); diff --git a/e2e-tests/init/charts.js b/e2e-tests/init/charts.js index f5119f94d..a9046a6fb 100644 --- a/e2e-tests/init/charts.js +++ b/e2e-tests/init/charts.js @@ -18,6 +18,42 @@ async function copyFolder(source, target) { } } +async function initMySqlDatabase(dbname, inputFile) { + 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 ${dbname}`, + }); + + 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 ${dbname}`, + }); + + await dbgateApi.importDatabase({ + connection: { + server: process.env.SERVER_mysql, + user: process.env.USER_mysql, + password: process.env.PASSWORD_mysql, + port: process.env.PORT_mysql, + database: dbname, + engine: 'mysql@dbgate-plugin-mysql', + }, + inputFile, + }); +} + async function run() { const connection = { server: process.env.SERVER_mysql, @@ -53,6 +89,8 @@ async function run() { path.resolve(path.join(__dirname, '../data/files/sql')), path.join(baseDir, 'files-e2etests', 'sql') ); + + await initMySqlDatabase('MyChinook', path.resolve(path.join(__dirname, '../data/chinook-mysql.sql'))); } dbgateApi.runScript(run);