From 2501cb170f4586e77935c350d0ab2a5a746fe76f Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 8 Jan 2025 17:01:56 +0100 Subject: [PATCH 01/13] try to use runner local ports for CI tests --- .github/workflows/run-tests.yaml | 21 ++++++++++---------- integration-tests/tools.js | 21 ++++++++++++-------- workflow-templates/run-tests.yaml | 33 ++++++++++++++++++++----------- 3 files changed, 45 insertions(+), 30 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 428f143fa..11c3076a1 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -23,17 +23,6 @@ jobs: - name: yarn install run: | yarn install - - name: Build packer dist for cypress - run: | - yarn prepare:packer - - name: yarn install cypress - run: | - cd e2e-tests - yarn install - - name: Run Cypress tests - run: | - cd e2e-tests - yarn test:ci - name: Integration tests run: | cd integration-tests @@ -72,24 +61,34 @@ jobs: env: POSTGRES_PASSWORD: Pwd2020Db options: '--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5' + ports: + - '15000:5432' mysql: image: 'mysql:8.0.18' env: MYSQL_ROOT_PASSWORD: Pwd2020Db + ports: + - '15004:3306' mssql: image: mcr.microsoft.com/mssql/server env: ACCEPT_EULA: 'Y' SA_PASSWORD: Pwd2020Db MSSQL_PID: Express + ports: + - '15002:1433' clickhouse: image: 'bitnami/clickhouse:24.8.4' env: CLICKHOUSE_ADMIN_PASSWORD: Pwd2020Db + ports: + - '15005:8123' oracle: image: 'gvenzl/oracle-xe:21-slim' env: ORACLE_PASSWORD: Pwd2020Db + ports: + - '15006:1521' mysql-ssh-login: image: 'ghcr.io/dbgate/mysql-ssh-login:latest' mysql-ssh-keyfile: diff --git a/integration-tests/tools.js b/integration-tests/tools.js index 96b68024d..b09a259bc 100644 --- a/integration-tests/tools.js +++ b/integration-tests/tools.js @@ -10,16 +10,21 @@ function randomDbName(dialect) { } function extractConnection(engine) { - const { connection } = engine; + return { + ...connection, + ...engine.local, + }; - if (process.env.LOCALTEST && engine.local) { - return { - ...connection, - ...engine.local, - }; - } + // const { connection } = engine; - return connection; + // if (process.env.LOCALTEST && engine.local) { + // return { + // ...connection, + // ...engine.local, + // }; + // } + + // return connection; } async function connect(engine, database) { diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index a15f6b9be..47f02a1f0 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -26,19 +26,19 @@ jobs: run: | yarn install - - name: Build packer dist for cypress - run: | - yarn prepare:packer + # - name: Build packer dist for cypress + # run: | + # yarn prepare:packer - - name: yarn install cypress - run: | - cd e2e-tests - yarn install + # - name: yarn install cypress + # run: | + # cd e2e-tests + # yarn install - - name: Run Cypress tests - run: | - cd e2e-tests - yarn test:ci + # - name: Run Cypress tests + # run: | + # cd e2e-tests + # yarn test:ci - name: Integration tests run: | @@ -88,11 +88,15 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 + ports: + - 15000:5432 mysql: image: mysql:8.0.18 env: MYSQL_ROOT_PASSWORD: Pwd2020Db + ports: + - 15004:3306 mssql: image: mcr.microsoft.com/mssql/server @@ -100,16 +104,23 @@ jobs: ACCEPT_EULA: Y SA_PASSWORD: Pwd2020Db MSSQL_PID: Express + ports: + - 15002:1433 clickhouse: image: bitnami/clickhouse:24.8.4 env: CLICKHOUSE_ADMIN_PASSWORD: Pwd2020Db + ports: + - 15005:8123 oracle: image: gvenzl/oracle-xe:21-slim env: ORACLE_PASSWORD: Pwd2020Db + ports: + - 15006:1521 + mysql-ssh-login: image: ghcr.io/dbgate/mysql-ssh-login:latest From 6712c8136fad0c25b32d31bfaa76d3f9e14707f6 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 8 Jan 2025 17:06:53 +0100 Subject: [PATCH 02/13] fix --- integration-tests/tools.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integration-tests/tools.js b/integration-tests/tools.js index b09a259bc..2a25f5dd9 100644 --- a/integration-tests/tools.js +++ b/integration-tests/tools.js @@ -10,6 +10,8 @@ function randomDbName(dialect) { } function extractConnection(engine) { + const { connection } = engine; + return { ...connection, ...engine.local, From 811935f1cd2ff844a0d8add8aaa7092c44c1597b Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 08:27:24 +0100 Subject: [PATCH 03/13] run tests without container --- .github/workflows/run-tests.yaml | 5 ++++- workflow-templates/run-tests.yaml | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 11c3076a1..48ebdbd59 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -11,8 +11,11 @@ name: Run tests jobs: test: runs-on: ubuntu-latest - container: 'node:18' steps: + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x - name: Install dependencies for cypress run: | apt-get update diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index 47f02a1f0..aab3aefe1 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -10,9 +10,13 @@ on: jobs: test: runs-on: ubuntu-latest - container: node:18 steps: + - name: Use Node.js 18.x + uses: actions/setup-node@v1 + with: + node-version: 18.x + - name: Install dependencies for cypress run: | apt-get update From a47b060478d22900997b65aa59e57090db3b36e8 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 08:31:07 +0100 Subject: [PATCH 04/13] fix build --- .github/workflows/run-tests.yaml | 4 ---- workflow-templates/run-tests.yaml | 8 ++++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 48ebdbd59..9f50e8cfc 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -16,10 +16,6 @@ jobs: uses: actions/setup-node@v1 with: node-version: 18.x - - name: Install dependencies for cypress - run: | - apt-get update - apt-get install -y xvfb libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 - uses: actions/checkout@v3 with: fetch-depth: 1 diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index aab3aefe1..066eb03db 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -17,10 +17,10 @@ jobs: with: node-version: 18.x - - name: Install dependencies for cypress - run: | - apt-get update - apt-get install -y xvfb libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 + # - name: Install dependencies for cypress + # run: | + # apt-get update + # apt-get install -y xvfb libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 - uses: actions/checkout@v3 with: From 89fce420facba2c850019b83e09e5afdab12ea8b Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 08:43:30 +0100 Subject: [PATCH 05/13] try to fix build --- .github/workflows/run-tests.yaml | 2 +- workflow-templates/run-tests.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 9f50e8cfc..b6a02d378 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -67,7 +67,7 @@ jobs: env: MYSQL_ROOT_PASSWORD: Pwd2020Db ports: - - '15004:3306' + - '15001:3306' mssql: image: mcr.microsoft.com/mssql/server env: diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index 066eb03db..c968b2ad7 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -100,7 +100,7 @@ jobs: env: MYSQL_ROOT_PASSWORD: Pwd2020Db ports: - - 15004:3306 + - 15001:3306 mssql: image: mcr.microsoft.com/mssql/server From e9c435c892e375b27e5c97ad06c1e1f3922064d2 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 11:02:19 +0100 Subject: [PATCH 06/13] cypress tests --- .github/workflows/run-tests.yaml | 40 ++++++++++++++++++--- workflow-templates/run-tests.yaml | 59 ++++++++++++++++++++++--------- 2 files changed, 77 insertions(+), 22 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index b6a02d378..473c7634d 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -22,6 +22,17 @@ jobs: - name: yarn install run: | yarn install + - name: Build packer dist for cypress + run: | + yarn prepare:packer + - name: yarn install cypress + run: | + cd e2e-tests + yarn install + - name: Run Cypress tests + run: | + cd e2e-tests + yarn test:local - name: Integration tests run: | cd integration-tests @@ -55,20 +66,20 @@ jobs: result-file: packages/datalib/result.json action-name: Datalib (perspectives) test results services: - postgres: + postgres-integr: image: postgres env: POSTGRES_PASSWORD: Pwd2020Db options: '--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5' ports: - '15000:5432' - mysql: + mysql-integr: image: 'mysql:8.0.18' env: MYSQL_ROOT_PASSWORD: Pwd2020Db ports: - '15001:3306' - mssql: + mssql-integr: image: mcr.microsoft.com/mssql/server env: ACCEPT_EULA: 'Y' @@ -76,21 +87,40 @@ jobs: MSSQL_PID: Express ports: - '15002:1433' - clickhouse: + clickhouse-integr: image: 'bitnami/clickhouse:24.8.4' env: CLICKHOUSE_ADMIN_PASSWORD: Pwd2020Db ports: - '15005:8123' - oracle: + oracle-integr: image: 'gvenzl/oracle-xe:21-slim' env: ORACLE_PASSWORD: Pwd2020Db ports: - '15006:1521' + postgres-cypress: + image: postgres + options: '--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5' + environment: + POSTGRES_PASSWORD: Pwd2020Db + ports: + - '16000:5432' + mysql-cypress: + image: 'mysql:8.0.18' + ports: + - '16004:3306' + environment: + - MYSQL_ROOT_PASSWORD=Pwd2020Db mysql-ssh-login: image: 'ghcr.io/dbgate/mysql-ssh-login:latest' + ports: + - 960382 mysql-ssh-keyfile: image: 'ghcr.io/dbgate/mysql-ssh-keyfile:latest' + ports: + - 960502 dex: image: 'ghcr.io/dbgate/dex:latest' + ports: + - '16009:5556' diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index c968b2ad7..f6813c465 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -30,19 +30,19 @@ jobs: run: | yarn install - # - name: Build packer dist for cypress - # run: | - # yarn prepare:packer + - name: Build packer dist for cypress + run: | + yarn prepare:packer - # - name: yarn install cypress - # run: | - # cd e2e-tests - # yarn install + - name: yarn install cypress + run: | + cd e2e-tests + yarn install - # - name: Run Cypress tests - # run: | - # cd e2e-tests - # yarn test:ci + - name: Run Cypress tests + run: | + cd e2e-tests + yarn test:local - name: Integration tests run: | @@ -83,7 +83,7 @@ jobs: action-name: Datalib (perspectives) test results services: - postgres: + postgres-integr: image: postgres env: POSTGRES_PASSWORD: Pwd2020Db @@ -95,14 +95,14 @@ jobs: ports: - 15000:5432 - mysql: + mysql-integr: image: mysql:8.0.18 env: MYSQL_ROOT_PASSWORD: Pwd2020Db ports: - 15001:3306 - mssql: + mssql-integr: image: mcr.microsoft.com/mssql/server env: ACCEPT_EULA: Y @@ -111,26 +111,51 @@ jobs: ports: - 15002:1433 - clickhouse: + clickhouse-integr: image: bitnami/clickhouse:24.8.4 env: CLICKHOUSE_ADMIN_PASSWORD: Pwd2020Db ports: - 15005:8123 - oracle: + oracle-integr: image: gvenzl/oracle-xe:21-slim env: ORACLE_PASSWORD: Pwd2020Db ports: - 15006:1521 - + + postgres-cypress: + image: postgres + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + environment: + POSTGRES_PASSWORD: Pwd2020Db + ports: + - 16000:5432 + + mysql-cypress: + image: mysql:8.0.18 + ports: + - 16004:3306 + environment: + - MYSQL_ROOT_PASSWORD=Pwd2020Db + mysql-ssh-login: image: ghcr.io/dbgate/mysql-ssh-login:latest + ports: + - 16006:22 mysql-ssh-keyfile: image: ghcr.io/dbgate/mysql-ssh-keyfile:latest + ports: + - 16008:22 dex: image: ghcr.io/dbgate/dex:latest + ports: + - 16009:5556 From defc92ee236baa32922b43d51529b0c669e5c9bf Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 11:03:15 +0100 Subject: [PATCH 07/13] workflow fix --- .github/workflows/run-tests.yaml | 4 ++-- workflow-templates/run-tests.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 473c7634d..9fe21133e 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -102,7 +102,7 @@ jobs: postgres-cypress: image: postgres options: '--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5' - environment: + env: POSTGRES_PASSWORD: Pwd2020Db ports: - '16000:5432' @@ -110,7 +110,7 @@ jobs: image: 'mysql:8.0.18' ports: - '16004:3306' - environment: + env: - MYSQL_ROOT_PASSWORD=Pwd2020Db mysql-ssh-login: image: 'ghcr.io/dbgate/mysql-ssh-login:latest' diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index f6813c465..f9dfb7c63 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -133,7 +133,7 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 - environment: + env: POSTGRES_PASSWORD: Pwd2020Db ports: - 16000:5432 @@ -142,7 +142,7 @@ jobs: image: mysql:8.0.18 ports: - 16004:3306 - environment: + env: - MYSQL_ROOT_PASSWORD=Pwd2020Db mysql-ssh-login: From 98ba5c7d9a22f3fe038619ffce9c573ef0fd3676 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 11:06:14 +0100 Subject: [PATCH 08/13] workflow fix --- .github/workflows/run-tests.yaml | 2 +- workflow-templates/run-tests.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 9fe21133e..39aa5894b 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -111,7 +111,7 @@ jobs: ports: - '16004:3306' env: - - MYSQL_ROOT_PASSWORD=Pwd2020Db + MYSQL_ROOT_PASSWORD: Pwd2020Db mysql-ssh-login: image: 'ghcr.io/dbgate/mysql-ssh-login:latest' ports: diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index f9dfb7c63..4d3081dc7 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -143,7 +143,7 @@ jobs: ports: - 16004:3306 env: - - MYSQL_ROOT_PASSWORD=Pwd2020Db + MYSQL_ROOT_PASSWORD: Pwd2020Db mysql-ssh-login: image: ghcr.io/dbgate/mysql-ssh-login:latest From dec02f24563751aa5fdd29d67ad1c8165220f388 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 12:07:33 +0100 Subject: [PATCH 09/13] fix --- .github/workflows/run-tests.yaml | 4 ++-- workflow-templates/run-tests.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 39aa5894b..f0860f734 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -115,11 +115,11 @@ jobs: mysql-ssh-login: image: 'ghcr.io/dbgate/mysql-ssh-login:latest' ports: - - 960382 + - '16006:22' mysql-ssh-keyfile: image: 'ghcr.io/dbgate/mysql-ssh-keyfile:latest' ports: - - 960502 + - '16008:22' dex: image: 'ghcr.io/dbgate/dex:latest' ports: diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index 4d3081dc7..377842780 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -148,12 +148,12 @@ jobs: mysql-ssh-login: image: ghcr.io/dbgate/mysql-ssh-login:latest ports: - - 16006:22 + - '16006:22' mysql-ssh-keyfile: image: ghcr.io/dbgate/mysql-ssh-keyfile:latest ports: - - 16008:22 + - '16008:22' dex: image: ghcr.io/dbgate/dex:latest From de1a1c923a6d1af2d0c798f764bb100b0eb6bea9 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 12:30:20 +0100 Subject: [PATCH 10/13] integr test refactor --- .../__tests__/schema-tests.spec.js | 4 +-- integration-tests/engines.js | 31 ++----------------- integration-tests/tools.js | 25 ++------------- integration-tests/wait.js | 3 +- workflow-templates/run-tests.yaml | 5 --- 5 files changed, 7 insertions(+), 61 deletions(-) diff --git a/integration-tests/__tests__/schema-tests.spec.js b/integration-tests/__tests__/schema-tests.spec.js index d31fcb13b..fda045c90 100644 --- a/integration-tests/__tests__/schema-tests.spec.js +++ b/integration-tests/__tests__/schema-tests.spec.js @@ -1,7 +1,7 @@ const stableStringify = require('json-stable-stringify'); const _ = require('lodash'); const fp = require('lodash/fp'); -const { testWrapper, extractConnection } = require('../tools'); +const { testWrapper } = require('../tools'); const engines = require('../engines'); const { runCommandOnDriver } = require('dbgate-tools'); @@ -62,7 +62,7 @@ describe('Schema tests', () => { await runCommandOnDriver(handle, driver, dmp => dmp.createSchema('myschema')); const schemaConnDef = { - ...extractConnection(engine), + ...engine.connection, database: `${handle.database}::myschema`, }; diff --git a/integration-tests/engines.js b/integration-tests/engines.js index 13985867f..d2617d2f6 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -19,10 +19,6 @@ const mysqlEngine = { engine: 'mysql@dbgate-plugin-mysql', password: 'Pwd2020Db', user: 'root', - server: 'mysql', - port: 3306, - }, - local: { server: 'localhost', port: 15001, }, @@ -170,10 +166,6 @@ const mariaDbEngine = { engine: 'mariadb@dbgate-plugin-mysql', password: 'Pwd2020Db', user: 'root', - server: 'mysql', - port: 3306, - }, - local: { server: 'localhost', port: 15004, }, @@ -194,10 +186,6 @@ const postgreSqlEngine = { engine: 'postgres@dbgate-plugin-postgres', password: 'Pwd2020Db', user: 'postgres', - server: 'postgres', - port: 5432, - }, - local: { server: 'localhost', port: 15000, }, @@ -370,10 +358,6 @@ const sqlServerEngine = { engine: 'mssql@dbgate-plugin-mssql', password: 'Pwd2020Db', user: 'sa', - server: 'mssql', - port: 1433, - }, - local: { server: 'localhost', port: 15002, }, @@ -521,10 +505,6 @@ const cockroachDbEngine = { connection: { engine: 'cockroach@dbgate-plugin-postgres', user: 'root', - server: 'cockroachdb', - port: 26257, - }, - local: { server: 'localhost', port: 15003, }, @@ -535,11 +515,8 @@ const clickhouseEngine = { label: 'ClickHouse', connection: { engine: 'clickhouse@dbgate-plugin-clickhouse', - databaseUrl: 'http://clickhouse:8123', - password: 'Pwd2020Db', - }, - local: { databaseUrl: 'http://localhost:15005', + password: 'Pwd2020Db', }, objects: [views], skipDataModifications: true, @@ -562,13 +539,9 @@ const oracleEngine = { engine: 'oracle@dbgate-plugin-oracle', password: 'Pwd2020Db', user: 'system', - server: 'oracle', - port: 1521, - serviceName: 'xe', - }, - local: { server: 'localhost', port: 15006, + serviceName: 'xe', }, skipOnCI: false, dbSnapshotBySeconds: true, diff --git a/integration-tests/tools.js b/integration-tests/tools.js index 2a25f5dd9..5f39398c2 100644 --- a/integration-tests/tools.js +++ b/integration-tests/tools.js @@ -9,28 +9,8 @@ function randomDbName(dialect) { return res; } -function extractConnection(engine) { - const { connection } = engine; - - return { - ...connection, - ...engine.local, - }; - - // const { connection } = engine; - - // if (process.env.LOCALTEST && engine.local) { - // return { - // ...connection, - // ...engine.local, - // }; - // } - - // return connection; -} - async function connect(engine, database) { - const connection = extractConnection(engine); + const { connection } = engine; const driver = requireEngineDriver(connection); if (engine.generateDbFile) { @@ -55,7 +35,7 @@ async function connect(engine, database) { } async function prepareConnection(engine, database) { - const connection = extractConnection(engine); + const { connection } = engine; const driver = requireEngineDriver(connection); if (engine.generateDbFile) { @@ -104,7 +84,6 @@ const testWrapperPrepareOnly = module.exports = { randomDbName, connect, - extractConnection, testWrapper, testWrapperPrepareOnly, }; diff --git a/integration-tests/wait.js b/integration-tests/wait.js index a61339bb3..fccba3929 100644 --- a/integration-tests/wait.js +++ b/integration-tests/wait.js @@ -1,13 +1,12 @@ const requireEngineDriver = require('dbgate-api/src/utility/requireEngineDriver'); const engines = require('./engines'); -const { extractConnection } = require('./tools'); global.DBGATE_PACKAGES = { 'dbgate-tools': require('dbgate-tools'), 'dbgate-sqltree': require('dbgate-sqltree'), }; async function connectEngine(engine) { - const connection = extractConnection(engine); + const { connection } = engine; const driver = requireEngineDriver(connection); for (;;) { try { diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index 377842780..e5280b86b 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -17,11 +17,6 @@ jobs: with: node-version: 18.x - # - name: Install dependencies for cypress - # run: | - # apt-get update - # apt-get install -y xvfb libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 - - uses: actions/checkout@v3 with: fetch-depth: 1 From f7ed9c3eda1d3bcb7b2f486695574d2ce016454f Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 12:43:32 +0100 Subject: [PATCH 11/13] e2e test refactor --- e2e-tests/containers/dex/dex-config.yaml | 2 +- e2e-tests/cypress/e2e/add-connection.cy.js | 34 +++------------------ e2e-tests/cypress/e2e/oauth.cy.js | 16 ++-------- e2e-tests/dex-config.yaml | 22 ------------- e2e-tests/docker-compose.yaml | 9 ++---- e2e-tests/env/oauth-ci/.env | 15 --------- e2e-tests/env/{oauth-local => oauth}/.env | 0 e2e-tests/env/portal-ci/.env | 22 ------------- e2e-tests/env/{portal-local => portal}/.env | 0 e2e-tests/package.json | 23 +++++--------- workflow-templates/run-tests.yaml | 2 +- 11 files changed, 20 insertions(+), 125 deletions(-) delete mode 100644 e2e-tests/dex-config.yaml delete mode 100644 e2e-tests/env/oauth-ci/.env rename e2e-tests/env/{oauth-local => oauth}/.env (100%) delete mode 100644 e2e-tests/env/portal-ci/.env rename e2e-tests/env/{portal-local => portal}/.env (100%) diff --git a/e2e-tests/containers/dex/dex-config.yaml b/e2e-tests/containers/dex/dex-config.yaml index e69ab6e68..190200844 100644 --- a/e2e-tests/containers/dex/dex-config.yaml +++ b/e2e-tests/containers/dex/dex-config.yaml @@ -1,4 +1,4 @@ -issuer: http://dex:5556/dex +issuer: http://localhost:16009/dex storage: type: memory web: diff --git a/e2e-tests/cypress/e2e/add-connection.cy.js b/e2e-tests/cypress/e2e/add-connection.cy.js index a36782ab6..00cfa70b7 100644 --- a/e2e-tests/cypress/e2e/add-connection.cy.js +++ b/e2e-tests/cypress/e2e/add-connection.cy.js @@ -7,18 +7,12 @@ describe('Add connection', () => { }); it('adds connection', () => { - const runOnCI = Cypress.env('runOnCI'); - cy.visit('http://localhost:3000'); // cy.get('[data-testid=ConnectionList_buttonNewConnection]').click(); cy.get('[data-testid=ConnectionDriverFields_connectionType]').select('MySQL'); cy.get('[data-testid=ConnectionDriverFields_user]').clear().type('root'); cy.get('[data-testid=ConnectionDriverFields_password]').clear().type('Pwd2020Db'); - if (runOnCI) { - cy.get('[data-testid=ConnectionDriverFields_server]').clear().type('mysql'); - } else { - cy.get('[data-testid=ConnectionDriverFields_port]').clear().type('16004'); - } + cy.get('[data-testid=ConnectionDriverFields_port]').clear().type('16004'); cy.get('[data-testid=ConnectionDriverFields_displayName]').clear().type('test-mysql-1'); // test connection @@ -32,8 +26,6 @@ describe('Add connection', () => { }); it('SSH connection - user + password', () => { - const runOnCI = Cypress.env('runOnCI'); - cy.visit('http://localhost:3000'); cy.contains('Connections'); @@ -52,19 +44,13 @@ describe('Add connection', () => { cy.get('[data-testid=ConnectionSshTunnelFields_useSshTunnel]').check(); cy.get('[data-testid=ConnectionSshTunnelFields_sshLogin]').clear().type('root'); cy.get('[data-testid=ConnectionSshTunnelFields_sshPassword]').clear().type('root'); - if (runOnCI) { - cy.get('[data-testid=ConnectionSshTunnelFields_sshHost]').clear().type('mysql-ssh-login'); - } else { - cy.get('[data-testid=ConnectionSshTunnelFields_sshPort]').clear().type('16006'); - } + cy.get('[data-testid=ConnectionSshTunnelFields_sshPort]').clear().type('16006'); cy.get('[data-testid=ConnectionTab_buttonSave]').click(); cy.get('[data-testid=ConnectionTab_buttonConnect]').click(); cy.contains('performance_schema'); }); it('SSH connection - keyfile', () => { - const runOnCI = Cypress.env('runOnCI'); - cy.visit('http://localhost:3000'); cy.contains('Connections'); @@ -87,30 +73,20 @@ describe('Add connection', () => { cy.get('[data-testid=ConnectionSshTunnelFields_sshKeyfile]') .clear() .type(path.join(Cypress.config('fileServerFolder'), 'cypress', 'e2e', 'mykey')); - if (runOnCI) { - cy.get('[data-testid=ConnectionSshTunnelFields_sshHost]').clear().type('mysql-ssh-keyfile'); - } else { - cy.get('[data-testid=ConnectionSshTunnelFields_sshPort]').clear().type('16008'); - } + cy.get('[data-testid=ConnectionSshTunnelFields_sshPort]').clear().type('16008'); cy.get('[data-testid=ConnectionTab_buttonSave]').click(); cy.get('[data-testid=ConnectionTab_buttonConnect]').click(); cy.contains('performance_schema'); }); it('ask password - mysql', () => { - const runOnCI = Cypress.env('runOnCI'); - cy.visit('http://localhost:3000'); - + cy.get('[data-testid=ConnectionList_buttonNewConnection]').click(); cy.get('[data-testid=ConnectionDriverFields_connectionType]').select('MySQL'); cy.get('[data-testid=ConnectionDriverFields_user]').clear().type('root'); cy.get('[data-testid=ConnectionDriverFields_password]').clear().type('Pwd2020Db'); - if (runOnCI) { - cy.get('[data-testid=ConnectionDriverFields_server]').clear().type('mysql'); - } else { - cy.get('[data-testid=ConnectionDriverFields_port]').clear().type('16004'); - } + cy.get('[data-testid=ConnectionDriverFields_port]').clear().type('16004'); cy.get('[data-testid=ConnectionDriverFields_displayName]').clear().type('test-mysql-2'); cy.testid('ConnectionDriverFields_passwordMode').select('askPassword'); diff --git a/e2e-tests/cypress/e2e/oauth.cy.js b/e2e-tests/cypress/e2e/oauth.cy.js index 34a7d5e6b..b763306a5 100644 --- a/e2e-tests/cypress/e2e/oauth.cy.js +++ b/e2e-tests/cypress/e2e/oauth.cy.js @@ -2,20 +2,10 @@ describe('OAuth', () => { it('OAuth login', () => { cy.visit('http://localhost:3000'); - const runOnCI = Cypress.env('runOnCI'); - // login on DEX - if (runOnCI) { - cy.origin('http://dex:5556', () => { - cy.get('#login').clear().type('test@example.com'); - cy.get('#password').clear().type('test'); - cy.get('#submit-login').click(); - }); - } else { - cy.get('#login').clear().type('test@example.com'); - cy.get('#password').clear().type('test'); - cy.get('#submit-login').click(); - } + cy.get('#login').clear().type('test@example.com'); + cy.get('#password').clear().type('test'); + cy.get('#submit-login').click(); // check DbGate connection cy.contains('MySql-connection').click(); diff --git a/e2e-tests/dex-config.yaml b/e2e-tests/dex-config.yaml deleted file mode 100644 index 190200844..000000000 --- a/e2e-tests/dex-config.yaml +++ /dev/null @@ -1,22 +0,0 @@ -issuer: http://localhost:16009/dex -storage: - type: memory -web: - http: 0.0.0.0:5556 - -oauth2: - skipApprovalScreen: true - -staticClients: - - id: my-app - redirectURIs: - - 'http://localhost:3000/' - name: 'My Test App' - secret: my-secret - -enablePasswordDB: true -staticPasswords: - - email: "test@example.com" - hash: "$2y$10$JcmlXnV1y7.egUdKwYNbseOnqYVIGc323gtvvHh4ZuSPZB30veYZy" - username: "test" - userID: "1234" diff --git a/e2e-tests/docker-compose.yaml b/e2e-tests/docker-compose.yaml index 3a27aec06..0fbb5b93a 100644 --- a/e2e-tests/docker-compose.yaml +++ b/e2e-tests/docker-compose.yaml @@ -22,19 +22,16 @@ services: restart: always ports: - 16005:3306 - - 16006:22 + - "16006:22" mysql-ssh-keyfile: build: containers/mysql-ssh-keyfile restart: always ports: - 16007:3306 - - 16008:22 + - "16008:22" dex: - image: dexidp/dex:v2.35.3 + build: containers/dex ports: - "16009:5556" - volumes: - - ./dex-config.yaml:/etc/dex/cfg/config.yaml - command: ["dex", "serve", "/etc/dex/cfg/config.yaml"] diff --git a/e2e-tests/env/oauth-ci/.env b/e2e-tests/env/oauth-ci/.env deleted file mode 100644 index 47627dff5..000000000 --- a/e2e-tests/env/oauth-ci/.env +++ /dev/null @@ -1,15 +0,0 @@ -CONNECTIONS=mysql - -LABEL_mysql=MySql-connection -SERVER_mysql=mysql -USER_mysql=root -PASSWORD_mysql=Pwd2020Db -PORT_mysql=3306 -ENGINE_mysql=mysql@dbgate-plugin-mysql - -OAUTH_AUTH=http://dex:5556/dex/auth -OAUTH_TOKEN=http://dex:5556/dex/token -OAUTH_CLIENT_ID=my-app -OAUTH_CLIENT_SECRET=my-secret -OAUTH_LOGIN_FIELD=username -OAUTH_SCOPE=openid \ No newline at end of file diff --git a/e2e-tests/env/oauth-local/.env b/e2e-tests/env/oauth/.env similarity index 100% rename from e2e-tests/env/oauth-local/.env rename to e2e-tests/env/oauth/.env diff --git a/e2e-tests/env/portal-ci/.env b/e2e-tests/env/portal-ci/.env deleted file mode 100644 index eedfe0fe5..000000000 --- a/e2e-tests/env/portal-ci/.env +++ /dev/null @@ -1,22 +0,0 @@ -CONNECTIONS=mysql,postgres,pgask - -LABEL_mysql=MySql-connection -SERVER_mysql=mysql -USER_mysql=root -PASSWORD_mysql=Pwd2020Db -PORT_mysql=3306 -ENGINE_mysql=mysql@dbgate-plugin-mysql - -LABEL_postgres=Postgres-connection -SERVER_postgres=postgres -USER_postgres=postgres -PASSWORD_postgres=Pwd2020Db -PORT_postgres=5432 -ENGINE_postgres=postgres@dbgate-plugin-postgres - -LABEL_pgask=Postgres-ask-connection -SERVER_pgask=postgres -USER_pgask=postgres -PORT_pgask=5432 -ENGINE_pgask=postgres@dbgate-plugin-postgres -PASSWORD_MODE_pgask=askUser diff --git a/e2e-tests/env/portal-local/.env b/e2e-tests/env/portal/.env similarity index 100% rename from e2e-tests/env/portal-local/.env rename to e2e-tests/env/portal/.env diff --git a/e2e-tests/package.json b/e2e-tests/package.json index fb88f3e76..260a742a9 100644 --- a/e2e-tests/package.json +++ b/e2e-tests/package.json @@ -15,24 +15,15 @@ "scripts": { "cy:open": "cypress open --config experimentalInteractiveRunEvents=true", - "cy:run:add-connection:local": "cypress run --spec cypress/e2e/add-connection.cy.js", - "cy:run:add-connection:ci": "cypress run --env runOnCI=true --spec cypress/e2e/add-connection.cy.js", - - "cy:run:portal:local": "cypress run --spec cypress/e2e/portal.cy.js", - "cy:run:portal:ci": "cypress run --env runOnCI=true --spec cypress/e2e/portal.cy.js", - - "cy:run:oauth:local": "cypress run --spec cypress/e2e/oauth.cy.js", - "cy:run:oauth:ci": "cypress run --env runOnCI=true --spec cypress/e2e/oauth.cy.js", + "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", "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:portal:local": "cd .. && env-cmd -f e2e-tests/env/portal-local/.env node e2e-tests/init/portal.js && env-cmd -f e2e-tests/env/portal-local/.env node packer/build/bundle.js --listen-api --run-e2e-tests", - "start:portal:ci": "cd .. && env-cmd -f e2e-tests/env/portal-ci/.env node e2e-tests/init/portal.js && env-cmd -f e2e-tests/env/portal-ci/.env node packer/build/bundle.js --listen-api --run-e2e-tests", - - "start:oauth:local": "cd .. && env-cmd -f e2e-tests/env/oauth-local/.env node packer/build/bundle.js --listen-api --run-e2e-tests", - "start:oauth:ci": "cd .. && env-cmd -f e2e-tests/env/oauth-ci/.env node packer/build/bundle.js --listen-api --run-e2e-tests", - - "test:ci": "start-server-and-test start:add-connection http://localhost:3000 cy:run:add-connection:ci && start-server-and-test start:portal:ci http://localhost:3000 cy:run:portal:ci && start-server-and-test start:oauth:ci http://localhost:3000 cy:run:oauth:ci", - "test:local": "start-server-and-test start:add-connection http://localhost:3000 cy:run:add-connection:local && start-server-and-test start:portal:local http://localhost:3000 cy:run:portal:local && start-server-and-test start:oauth:local http://localhost:3000 cy:run:oauth:local" + "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:ci": "yarn test" } } diff --git a/workflow-templates/run-tests.yaml b/workflow-templates/run-tests.yaml index e5280b86b..7c6fafef4 100644 --- a/workflow-templates/run-tests.yaml +++ b/workflow-templates/run-tests.yaml @@ -37,7 +37,7 @@ jobs: - name: Run Cypress tests run: | cd e2e-tests - yarn test:local + yarn test:ci - name: Integration tests run: | From 9457df93780f19a5d608c98f0efacbb06a6102a7 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 12:50:02 +0100 Subject: [PATCH 12/13] fix --- .github/workflows/run-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index f0860f734..ae43194e9 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -32,7 +32,7 @@ jobs: - name: Run Cypress tests run: | cd e2e-tests - yarn test:local + yarn test:ci - name: Integration tests run: | cd integration-tests From df64bd1e84fc2fe20ed6f09a5eba00ff94835bc9 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Thu, 9 Jan 2025 13:27:53 +0100 Subject: [PATCH 13/13] fix --- e2e-tests/cypress.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e-tests/cypress.config.js b/e2e-tests/cypress.config.js index b90aa0e96..e0dcc81d3 100644 --- a/e2e-tests/cypress.config.js +++ b/e2e-tests/cypress.config.js @@ -20,10 +20,10 @@ module.exports = defineConfig({ serverProcess = exec('yarn start:add-connection'); break; case 'portal': - serverProcess = exec('yarn start:portal:local'); + serverProcess = exec('yarn start:portal'); break; case 'oauth': - serverProcess = exec('yarn start:oauth:local'); + serverProcess = exec('yarn start:oauth'); break; }