diff --git a/.github/workflows/run-tests-pro.yaml b/.github/workflows/e2e-pro.yaml similarity index 96% rename from .github/workflows/run-tests-pro.yaml rename to .github/workflows/e2e-pro.yaml index e7bdba28c..7afbb15fb 100644 --- a/.github/workflows/run-tests-pro.yaml +++ b/.github/workflows/e2e-pro.yaml @@ -9,7 +9,7 @@ name: Run tests with screenshots PREMIUM - develop - feature/** jobs: - test: + alltests: runs-on: ubuntu-latest steps: - name: Use Node.js 18.x @@ -61,7 +61,7 @@ jobs: - name: Copy screenshots run: | mkdir screenshots - cp ../dbgate-merged/e2e-tests/cypress/screenshots/**/*.png screenshots/ + cp ../dbgate-merged/e2e-tests/screenshots/*.png screenshots/ - name: Upload E2E screenshots uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 710afbb7f..990c7d306 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -9,7 +9,7 @@ name: Run tests - develop - feature/** jobs: - test: + e2etest: runs-on: ubuntu-latest steps: - name: Use Node.js 18.x diff --git a/e2e-tests/cypress.config.js b/e2e-tests/cypress.config.js index 8199a25b7..617fdd5ce 100644 --- a/e2e-tests/cypress.config.js +++ b/e2e-tests/cypress.config.js @@ -3,11 +3,13 @@ const killPort = require('kill-port'); const { clearTestingData } = require('./e2eTestTools'); const waitOn = require('wait-on'); const { exec } = require('child_process'); +const fs = require('fs'); +const path = require('path'); module.exports = defineConfig({ e2e: { - trashAssetsBeforeRuns: false, - + // trashAssetsBeforeRuns: false, + setupNodeEvents(on, config) { // implement node event listeners here @@ -41,6 +43,15 @@ module.exports = defineConfig({ }); } }); + + on('after:screenshot', details => { + fs.renameSync(details.path, path.resolve(__dirname, `screenshots/${details.name}.png`)); + }); + // on('task', { + // renameFile({ from, to }) { + // fs.renameSync(from, to); + // }, + // }); }, }, }); diff --git a/e2e-tests/cypress/e2e/browse-data.cy.js b/e2e-tests/cypress/e2e/browse-data.cy.js index b7024286f..fc28b3133 100644 --- a/e2e-tests/cypress/e2e/browse-data.cy.js +++ b/e2e-tests/cypress/e2e/browse-data.cy.js @@ -158,7 +158,7 @@ describe('Data browser data', () => { cy.themeshot('query'); }); - it.only('Query editor - join wizard', () => { + it('Query editor - join wizard', () => { cy.contains('MySql-connection').click(); cy.contains('MyChinook').click(); cy.testid('TabsPanel_buttonNewQuery').click(); @@ -170,4 +170,21 @@ describe('Data browser data', () => { cy.contains('INNER JOIN Customer ON Invoice.CustomerId = Customer.CustomerId'); cy.themeshot('joinwizard'); }); + + it.only('Mongo JSON data view', () => { + cy.contains('Mongo-connection').click(); + cy.contains('MgChinook').click(); + cy.contains('Customer').click(); + cy.testid('DataFilterControl_input_CustomerId').type('<=10{enter}'); + // test filter + cy.contains('Rows: 10'); + cy.contains('Helena').rightclick(); + cy.contains('Open query').click(); + cy.wait(1000); + cy.contains('Execute').click(); + cy.testid('WidgetIconPanel_cell-data').click(); + // test JSON view + cy.contains('Country: "Brazil"'); + cy.themeshot('mongoquery'); + }); }); diff --git a/e2e-tests/cypress/support/commands.js b/e2e-tests/cypress/support/commands.js index 14d193ea5..cc0385e2c 100644 --- a/e2e-tests/cypress/support/commands.js +++ b/e2e-tests/cypress/support/commands.js @@ -1,3 +1,5 @@ +const path = require('path'); + // *********************************************** // This example commands.js shows you how to // create various custom commands and overwrite @@ -33,11 +35,45 @@ Cypress.Commands.add('themeshot', file => { win.__changeCurrentTheme('theme-dark'); }); + // cy.screenshot(`${file}-dark`, { + // onAfterScreenshot: (doc, props) => { + // cy.task('renameFile', { + // from: props.path, + // to: path.resolve(__dirname, `../../screenshots/${file}-dark.png`), + // }); + + // // fs.rename(props.path, path.resolve(path.join(__dirname, `../../screenshots/${file}-dark.png`))); + // }, + // }); + cy.screenshot(`${file}-dark`); + // .then(props => { + // return cy.task('renameFile', { + // from: props.path, + // to: path.resolve(__dirname, `../../screenshots/${file}-dark.png`), + // }); + // }); cy.window().then(win => { win.__changeCurrentTheme('theme-light'); }); cy.screenshot(`${file}-light`); + // .then(props => { + // return cy.task('renameFile', { + // from: props.path, + // to: path.resolve(__dirname, `../../screenshots/${file}-light.png`), + // }); + // }); + + // cy.screenshot(`${file}-light`, { + // onAfterScreenshot: (doc, props) => { + // cy.task('renameFile', { + // from: props.path, + // to: path.resolve(__dirname, `../../screenshots/${file}-light.png`), + // }); + + // // fs.rename(props.path, path.resolve(path.join(__dirname, `../../screenshots/${file}-light.png`))); + // }, + // }); }); diff --git a/packages/web/src/datagrid/DataFilterControl.svelte b/packages/web/src/datagrid/DataFilterControl.svelte index 3acf95f44..7337f2729 100644 --- a/packages/web/src/datagrid/DataFilterControl.svelte +++ b/packages/web/src/datagrid/DataFilterControl.svelte @@ -104,7 +104,7 @@ if (filterBehaviour.supportNumberLikeComparison) { res.push( { divider: true }, - + { onClick: () => openFilterWindow('>'), text: 'Greater Than...' }, { onClick: () => openFilterWindow('>='), text: 'Greater Than Or Equal To...' }, { onClick: () => openFilterWindow('<'), text: 'Less Than...' }, @@ -287,6 +287,7 @@ class:isError class:isOk {placeholder} + data-testid={`DataFilterControl_input_${uniqueName}`} /> {#if customCommandIcon && onCustomCommand} diff --git a/workflow-templates/run-tests-pro.yaml b/workflow-templates/e2e-pro.yaml similarity index 96% rename from workflow-templates/run-tests-pro.yaml rename to workflow-templates/e2e-pro.yaml index 0e3743b6e..c2496bbc5 100644 --- a/workflow-templates/run-tests-pro.yaml +++ b/workflow-templates/e2e-pro.yaml @@ -8,7 +8,7 @@ on: - 'feature/**' jobs: - test: + alltests: runs-on: ubuntu-latest steps: @@ -53,7 +53,7 @@ jobs: - name: Copy screenshots run: | mkdir screenshots - cp ../dbgate-merged/e2e-tests/cypress/screenshots/**/*.png screenshots/ + cp ../dbgate-merged/e2e-tests/screenshots/*.png screenshots/ - name: Upload E2E screenshots uses: actions/upload-artifact@v4 diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index 14738dc06..3ae80f8b4 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -8,7 +8,7 @@ on: - 'feature/**' jobs: - test: + e2etest: runs-on: ubuntu-latest steps: