From f2cc66be84dba9d0b801310dfba46e6a579b5c7b Mon Sep 17 00:00:00 2001
From: Manish Kushare <37823141+manishkushare@users.noreply.github.com>
Date: Thu, 12 Oct 2023 16:54:02 +0530
Subject: [PATCH 1/2] Server side pagination fetching new set of data upon
changing page (#7827)
* pagination bug fixed
* update version
---
.version | 2 +-
frontend/.version | 2 +-
frontend/src/Editor/Components/Table/Pagination.jsx | 12 ++++++++++++
frontend/src/Editor/Components/Table/Table.jsx | 11 ++---------
server/.version | 2 +-
5 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/.version b/.version
index 7329e21c3b..4e2200b98e 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-2.20.0
+2.20.1
diff --git a/frontend/.version b/frontend/.version
index 7329e21c3b..4e2200b98e 100644
--- a/frontend/.version
+++ b/frontend/.version
@@ -1 +1 @@
-2.20.0
+2.20.1
diff --git a/frontend/src/Editor/Components/Table/Pagination.jsx b/frontend/src/Editor/Components/Table/Pagination.jsx
index 1f875c595c..123e19a414 100644
--- a/frontend/src/Editor/Components/Table/Pagination.jsx
+++ b/frontend/src/Editor/Components/Table/Pagination.jsx
@@ -1,5 +1,6 @@
import React, { useState, useEffect } from 'react';
import { ButtonSolid } from '@/_ui/AppButton/AppButton';
+import Skeleton, { SkeletonTheme } from 'react-loading-skeleton';
export const Pagination = function Pagination({
onPageIndexChanged,
@@ -16,6 +17,7 @@ export const Pagination = function Pagination({
// eslint-disable-next-line no-unused-vars
darkMode,
tableWidth,
+ loadingState,
}) {
const [pageCount, setPageCount] = useState(autoPageCount);
@@ -50,6 +52,16 @@ export const Pagination = function Pagination({
gotoPage(pageIndex - 1);
}
+ if (loadingState) {
+ return (
+
diff --git a/frontend/src/Editor/Components/Table/Table.jsx b/frontend/src/Editor/Components/Table/Table.jsx
index 2a9c252700..36e9a82c65 100644
--- a/frontend/src/Editor/Components/Table/Table.jsx
+++ b/frontend/src/Editor/Components/Table/Table.jsx
@@ -1535,15 +1535,7 @@ export function Table({
))}
- {loadingState && (
-
-
-
-
-
- )}
-
- {enablePagination && !loadingState && (
+ {enablePagination && (
)}
diff --git a/server/.version b/server/.version
index 7329e21c3b..4e2200b98e 100644
--- a/server/.version
+++ b/server/.version
@@ -1 +1 @@
-2.20.0
+2.20.1
From 83ba20bcdb9a1e54978378c75207a8564643d7d6 Mon Sep 17 00:00:00 2001
From: Adish M <44204658+adishM98@users.noreply.github.com>
Date: Fri, 13 Oct 2023 15:26:27 +0530
Subject: [PATCH 2/2] adding Cypress automation revamp to main (#7857)
---
.../{cypress.yml => cypress-appbuilder.yml} | 139 ++-----
.github/workflows/cypress-marketplace.yml | 201 ++++++++++
.github/workflows/cypress-platform.yml | 218 +++++++++++
.../workflows/render-preview-deploy-pro.yml | 351 ------------------
.../workflows/render-suspend-labeler-pro.yml | 45 ---
5 files changed, 459 insertions(+), 495 deletions(-)
rename .github/workflows/{cypress.yml => cypress-appbuilder.yml} (63%)
create mode 100644 .github/workflows/cypress-marketplace.yml
create mode 100644 .github/workflows/cypress-platform.yml
delete mode 100644 .github/workflows/render-preview-deploy-pro.yml
delete mode 100644 .github/workflows/render-suspend-labeler-pro.yml
diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress-appbuilder.yml
similarity index 63%
rename from .github/workflows/cypress.yml
rename to .github/workflows/cypress-appbuilder.yml
index 7265d0f230..b7d1177183 100644
--- a/.github/workflows/cypress.yml
+++ b/.github/workflows/cypress-appbuilder.yml
@@ -1,4 +1,4 @@
-name: Cypress E2E Test
+name: Cypress App-Builder
on:
pull_request_target:
@@ -117,94 +117,80 @@ jobs:
name: screenshots
path: cypress-tests/cypress/screenshots
- Cypress-Platform:
+ Cypress-App-builder-Subpath:
runs-on: ubuntu-22.04
- if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-workspace' }}
+ if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-app-builder-subpath' }}
steps:
- - name: Setup Node.js
- uses: actions/setup-node@v2
- with:
- node-version: 18.3.0
-
- - name: Set up Docker
- uses: docker-practice/actions-setup-docker@master
-
- - name: Run PosgtreSQL Database Docker Container
- run: |
- sudo docker network create tooljet
- sudo docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_PORT=5432 -d postgres:13
-
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.ref }}
- - name: Install and build dependencies
+ # Create Docker Buildx builder with platform configuration
+ - name: Set up Docker Buildx
run: |
- npm cache clean --force
- npm install
- npm install --prefix server
- npm install --prefix frontend
- npm run build:plugins
+ mkdir -p ~/.docker/cli-plugins
+ curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
+ chmod a+x ~/.docker/cli-plugins/docker-buildx
+ docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
+ docker buildx use mybuilder
+
+ - name: Set DOCKER_CLI_EXPERIMENTAL
+ run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
+
+ - name: use mybuilder buildx
+ run: docker buildx use mybuilder
+
+ - name: Build docker image
+ run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress
- name: Set up environment variables
run: |
- echo "TOOLJET_HOST=http://localhost:8082" >> .env
+ echo "TOOLJET_HOST=http://localhost:3000" >> .env
echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
echo "PG_DB=tooljet_development" >> .env
echo "PG_USER=postgres" >> .env
- echo "PG_HOST=localhost" >> .env
+ echo "PG_HOST=postgres" >> .env
echo "PG_PASS=postgres" >> .env
echo "PG_PORT=5432" >> .env
echo "ENABLE_TOOLJET_DB=true" >> .env
- echo "TOOLJET_DB=tooljet" >> .env
+ echo "TOOLJET_DB=tooljet_db" >> .env
echo "TOOLJET_DB_USER=postgres" >> .env
- echo "TOOLJET_DB_HOST=localhost" >> .env
+ echo "TOOLJET_DB_HOST=postgres" >> .env
echo "TOOLJET_DB_PASS=postgres" >> .env
echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
- echo "PGRST_HOST=localhost:3001" >> .env
+ echo "PGRST_HOST=postgrest" >> .env
+ echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env
echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env
echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env
echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env
echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env
+ echo "SUB_PATH=/apps/tooljet/" >> .env
+ echo "NODE_ENV=production" >> .env
+ echo "SERVE_CLIENT=true" >> .env
- - name: Set up database
- run: |
- npm run --prefix server db:create
- npm run --prefix server db:reset
- npm run --prefix server db:seed
+ - name: Pulling the docker-compose file
+ run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data
- - name: sleep 5
- run: sleep 5
+ - name: Run docker-compose file
+ run: docker-compose up -d
- - name: Run PostgREST Docker Container
- run: |
- sudo docker run -d --name postgrest --network tooljet -p 3001:3000 \
- -e PGRST_DB_URI="postgres://postgres:postgres@postgres:5432/tooljet" -e PGRST_DB_ANON_ROLE="postgres" -e PGRST_JWT_SECRET="r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" \
- postgrest/postgrest:v10.1.1.20221215
+ - name: Checking containers
+ run: docker ps -a
- - name: Run plugins compilation in watch mode
- run: cd plugins && npm start &
-
- - name: Run the server
- run: cd server && npm run start:dev &
-
- - name: Run the client
- run: cd frontend && npm start &
+ - name: docker logs
+ run: sudo docker logs Tooljet-app
- name: Wait for the server to be ready
run: |
timeout 1500 bash -c '
- until curl --silent --fail http://localhost:8082; do
+ until curl --silent --fail http://localhost:80/apps/tooljet/; do
sleep 5
done'
- - name: docker logs
- run: sudo docker logs postgrest
-
- name: Create Cypress environment file
id: create-json
uses: jsdaniell/create-json@1.1.2
@@ -213,57 +199,12 @@ jobs:
json: ${{ secrets.CYPRESS_SECRETS }}
dir: "./cypress-tests"
- - name: Platform
+ - name: App Builder subpath
uses: cypress-io/github-action@v5
with:
working-directory: ./cypress-tests
- config: "baseUrl=http://localhost:8082"
- config-file: cypress-workspace.config.js
-
- - name: Capture Screenshots
- uses: actions/upload-artifact@v3
- if: always()
- with:
- name: screenshots
- path: cypress-tests/cypress/screenshots
-
- Cypress-Marketplace:
- runs-on: ubuntu-22.04
-
- if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-marketplace' }}
-
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- ref: ${{ github.event.pull_request.head.ref }}
-
- - name: Setup Node.js
- uses: actions/setup-node@v2
- with:
- node-version: 18.3.0
-
- - name: Checking the PR URL
- run: |
- timeout 1500 bash -c '
- until curl --silent --fail https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com; do
- sleep 100
- done'
-
- - name: Create Cypress environment file
- id: create-json
- uses: jsdaniell/create-json@1.1.2
- with:
- name: "cypress.env.json"
- json: ${{ secrets.CYPRESS_SECRETS }}
- dir: "./cypress-tests"
-
- - name: Marketplace
- uses: cypress-io/github-action@v5
- with:
- working-directory: ./cypress-tests
- config: "baseUrl=https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com"
- config-file: cypress-marketplace.config.js
+ config: "baseUrl=http://localhost:80/apps/tooljet/"
+ config-file: cypress-app-builder.config.js
- name: Capture Screenshots
uses: actions/upload-artifact@v3
diff --git a/.github/workflows/cypress-marketplace.yml b/.github/workflows/cypress-marketplace.yml
new file mode 100644
index 0000000000..79c3ad776b
--- /dev/null
+++ b/.github/workflows/cypress-marketplace.yml
@@ -0,0 +1,201 @@
+name: Cypress Marketplace
+
+on:
+ pull_request_target:
+ types: [labeled, unlabeled, closed]
+
+ workflow_dispatch:
+
+env:
+ PR_NUMBER: ${{ github.event.number }}
+ BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
+
+jobs:
+ Cypress-Marketplace:
+ runs-on: ubuntu-22.04
+
+ if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-marketplace' }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.pull_request.head.ref }}
+
+ # Create Docker Buildx builder with platform configuration
+ - name: Set up Docker Buildx
+ run: |
+ mkdir -p ~/.docker/cli-plugins
+ curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
+ chmod a+x ~/.docker/cli-plugins/docker-buildx
+ docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
+ docker buildx use mybuilder
+
+ - name: Set DOCKER_CLI_EXPERIMENTAL
+ run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
+
+ - name: use mybuilder buildx
+ run: docker buildx use mybuilder
+
+ - name: Build docker image
+ run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress
+
+ - name: Set up environment variables
+ run: |
+ echo "TOOLJET_HOST=http://localhost:3000" >> .env
+ echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
+ echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
+ echo "PG_DB=tooljet_development" >> .env
+ echo "PG_USER=postgres" >> .env
+ echo "PG_HOST=postgres" >> .env
+ echo "PG_PASS=postgres" >> .env
+ echo "PG_PORT=5432" >> .env
+ echo "ENABLE_TOOLJET_DB=true" >> .env
+ echo "TOOLJET_DB=tooljet_db" >> .env
+ echo "TOOLJET_DB_USER=postgres" >> .env
+ echo "TOOLJET_DB_HOST=postgres" >> .env
+ echo "TOOLJET_DB_PASS=postgres" >> .env
+ echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
+ echo "PGRST_HOST=postgrest" >> .env
+ echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env
+ echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env
+
+ - name: Pulling the docker-compose file
+ run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data
+
+ - name: Run docker-compose file
+ run: docker-compose up -d
+
+ - name: Checking containers
+ run: docker ps -a
+
+ - name: docker logs
+ run: sudo docker logs Tooljet-app
+
+ - name: Wait for the server to be ready
+ run: |
+ timeout 1500 bash -c '
+ until curl --silent --fail http://localhost:80; do
+ sleep 5
+ done'
+
+ - name: Create Cypress environment file
+ id: create-json
+ uses: jsdaniell/create-json@1.1.2
+ with:
+ name: "cypress.env.json"
+ json: ${{ secrets.CYPRESS_SECRETS }}
+ dir: "./cypress-tests"
+
+ - name: Marketplace
+ uses: cypress-io/github-action@v5
+ with:
+ working-directory: ./cypress-tests
+ config: "baseUrl=http://localhost:80"
+ config-file: cypress-marketplace.config.js
+
+ - name: Capture Screenshots
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: screenshots
+ path: cypress-tests/cypress/screenshots
+
+ Cypress-Marketplace-Subpath:
+ runs-on: ubuntu-22.04
+
+ if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-marketplace-subpath' }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.pull_request.head.ref }}
+
+ # Create Docker Buildx builder with platform configuration
+ - name: Set up Docker Buildx
+ run: |
+ mkdir -p ~/.docker/cli-plugins
+ curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
+ chmod a+x ~/.docker/cli-plugins/docker-buildx
+ docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
+ docker buildx use mybuilder
+
+ - name: Set DOCKER_CLI_EXPERIMENTAL
+ run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
+
+ - name: use mybuilder buildx
+ run: docker buildx use mybuilder
+
+ - name: Build docker image
+ run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress
+
+ - name: Set up environment variables
+ run: |
+ echo "TOOLJET_HOST=http://localhost:3000" >> .env
+ echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
+ echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
+ echo "PG_DB=tooljet_development" >> .env
+ echo "PG_USER=postgres" >> .env
+ echo "PG_HOST=postgres" >> .env
+ echo "PG_PASS=postgres" >> .env
+ echo "PG_PORT=5432" >> .env
+ echo "ENABLE_TOOLJET_DB=true" >> .env
+ echo "TOOLJET_DB=tooljet_db" >> .env
+ echo "TOOLJET_DB_USER=postgres" >> .env
+ echo "TOOLJET_DB_HOST=postgres" >> .env
+ echo "TOOLJET_DB_PASS=postgres" >> .env
+ echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
+ echo "PGRST_HOST=postgrest" >> .env
+ echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env
+ echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env
+ echo "SUB_PATH=/apps/tooljet/" >> .env
+ echo "NODE_ENV=production" >> .env
+ echo "SERVE_CLIENT=true" >> .env
+
+ - name: Pulling the docker-compose file
+ run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data
+
+ - name: Run docker-compose file
+ run: docker-compose up -d
+
+ - name: Checking containers
+ run: docker ps -a
+
+ - name: docker logs
+ run: sudo docker logs Tooljet-app
+
+ - name: Wait for the server to be ready
+ run: |
+ timeout 1500 bash -c '
+ until curl --silent --fail http://localhost:80/apps/tooljet/; do
+ sleep 5
+ done'
+
+ - name: Create Cypress environment file
+ id: create-json
+ uses: jsdaniell/create-json@1.1.2
+ with:
+ name: "cypress.env.json"
+ json: ${{ secrets.CYPRESS_SECRETS }}
+ dir: "./cypress-tests"
+
+ - name: Marketplace subpath
+ uses: cypress-io/github-action@v5
+ with:
+ working-directory: ./cypress-tests
+ config: "baseUrl=http://localhost:80/apps/tooljet/"
+ config-file: cypress-marketplace.config.js
+
+ - name: Capture Screenshots
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: screenshots
+ path: cypress-tests/cypress/screenshots
diff --git a/.github/workflows/cypress-platform.yml b/.github/workflows/cypress-platform.yml
new file mode 100644
index 0000000000..df001669df
--- /dev/null
+++ b/.github/workflows/cypress-platform.yml
@@ -0,0 +1,218 @@
+name: Cypress Platform
+
+on:
+ pull_request_target:
+ types: [labeled, unlabeled, closed]
+
+ workflow_dispatch:
+
+env:
+ PR_NUMBER: ${{ github.event.number }}
+ BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
+
+jobs:
+ Cypress-Platform:
+ runs-on: ubuntu-22.04
+
+ if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-workspace' }}
+
+ steps:
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 18.3.0
+
+ - name: Set up Docker
+ uses: docker-practice/actions-setup-docker@master
+
+ - name: Run PosgtreSQL Database Docker Container
+ run: |
+ sudo docker network create tooljet
+ sudo docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_PORT=5432 -d postgres:13
+
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.pull_request.head.ref }}
+
+ - name: Install and build dependencies
+ run: |
+ npm cache clean --force
+ npm install
+ npm install --prefix server
+ npm install --prefix frontend
+ npm run build:plugins
+
+ - name: Set up environment variables
+ run: |
+ echo "TOOLJET_HOST=http://localhost:8082" >> .env
+ echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
+ echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
+ echo "PG_DB=tooljet_development" >> .env
+ echo "PG_USER=postgres" >> .env
+ echo "PG_HOST=localhost" >> .env
+ echo "PG_PASS=postgres" >> .env
+ echo "PG_PORT=5432" >> .env
+ echo "ENABLE_TOOLJET_DB=true" >> .env
+ echo "TOOLJET_DB=tooljet" >> .env
+ echo "TOOLJET_DB_USER=postgres" >> .env
+ echo "TOOLJET_DB_HOST=localhost" >> .env
+ echo "TOOLJET_DB_PASS=postgres" >> .env
+ echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
+ echo "PGRST_HOST=localhost:3001" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env
+ echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env
+
+ - name: Set up database
+ run: |
+ npm run --prefix server db:create
+ npm run --prefix server db:reset
+ npm run --prefix server db:seed
+
+ - name: sleep 5
+ run: sleep 5
+
+ - name: Run PostgREST Docker Container
+ run: |
+ sudo docker run -d --name postgrest --network tooljet -p 3001:3000 \
+ -e PGRST_DB_URI="postgres://postgres:postgres@postgres:5432/tooljet" -e PGRST_DB_ANON_ROLE="postgres" -e PGRST_JWT_SECRET="r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" \
+ postgrest/postgrest:v10.1.1.20221215
+
+ - name: Run plugins compilation in watch mode
+ run: cd plugins && npm start &
+
+ - name: Run the server
+ run: cd server && npm run start:dev &
+
+ - name: Run the client
+ run: cd frontend && npm start &
+
+ - name: Wait for the server to be ready
+ run: |
+ timeout 1500 bash -c '
+ until curl --silent --fail http://localhost:8082; do
+ sleep 5
+ done'
+
+ - name: docker logs
+ run: sudo docker logs postgrest
+
+ - name: Create Cypress environment file
+ id: create-json
+ uses: jsdaniell/create-json@1.1.2
+ with:
+ name: "cypress.env.json"
+ json: ${{ secrets.CYPRESS_SECRETS }}
+ dir: "./cypress-tests"
+
+ - name: Platform
+ uses: cypress-io/github-action@v5
+ with:
+ working-directory: ./cypress-tests
+ config: "baseUrl=http://localhost:8082"
+ config-file: cypress-workspace.config.js
+
+ - name: Capture Screenshots
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: screenshots
+ path: cypress-tests/cypress/screenshots
+
+ Cypress-Platform-subpath:
+ runs-on: ubuntu-22.04
+
+ if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-workspace-subpath' }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.pull_request.head.ref }}
+
+ # Create Docker Buildx builder with platform configuration
+ - name: Set up Docker Buildx
+ run: |
+ mkdir -p ~/.docker/cli-plugins
+ curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
+ chmod a+x ~/.docker/cli-plugins/docker-buildx
+ docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
+ docker buildx use mybuilder
+
+ - name: Set DOCKER_CLI_EXPERIMENTAL
+ run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
+
+ - name: use mybuilder buildx
+ run: docker buildx use mybuilder
+
+ - name: Build docker image
+ run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress
+
+ - name: Set up environment variables
+ run: |
+ echo "TOOLJET_HOST=http://localhost:3000" >> .env
+ echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env
+ echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env
+ echo "PG_DB=tooljet_development" >> .env
+ echo "PG_USER=postgres" >> .env
+ echo "PG_HOST=postgres" >> .env
+ echo "PG_PASS=postgres" >> .env
+ echo "PG_PORT=5432" >> .env
+ echo "ENABLE_TOOLJET_DB=true" >> .env
+ echo "TOOLJET_DB=tooljet_db" >> .env
+ echo "TOOLJET_DB_USER=postgres" >> .env
+ echo "TOOLJET_DB_HOST=postgres" >> .env
+ echo "TOOLJET_DB_PASS=postgres" >> .env
+ echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env
+ echo "PGRST_HOST=postgrest" >> .env
+ echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env
+ echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env
+ echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env
+ echo "SUB_PATH=/apps/tooljet/" >> .env
+ echo "NODE_ENV=production" >> .env
+ echo "SERVE_CLIENT=true" >> .env
+
+ - name: Pulling the docker-compose file
+ run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data
+
+ - name: Run docker-compose file
+ run: docker-compose up -d
+
+ - name: Checking containers
+ run: docker ps -a
+
+ - name: docker logs
+ run: sudo docker logs Tooljet-app
+
+ - name: Wait for the server to be ready
+ run: |
+ timeout 1500 bash -c '
+ until curl --silent --fail http://localhost:80/apps/tooljet/; do
+ sleep 5
+ done'
+
+ - name: Create Cypress environment file
+ id: create-json
+ uses: jsdaniell/create-json@1.1.2
+ with:
+ name: "cypress.env.json"
+ json: ${{ secrets.CYPRESS_SECRETS }}
+ dir: "./cypress-tests"
+
+ - name: Platform-subpath
+ uses: cypress-io/github-action@v5
+ with:
+ working-directory: ./cypress-tests
+ config: "baseUrl=http://localhost:80/apps/tooljet/"
+ config-file: cypress-workspace.config.js
+
+ - name: Capture Screenshots
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: screenshots
+ path: cypress-tests/cypress/screenshots
diff --git a/.github/workflows/render-preview-deploy-pro.yml b/.github/workflows/render-preview-deploy-pro.yml
deleted file mode 100644
index 5ae9cf06b2..0000000000
--- a/.github/workflows/render-preview-deploy-pro.yml
+++ /dev/null
@@ -1,351 +0,0 @@
-name: Render cypress app deploy
-on:
- pull_request_target:
- types: [labeled, unlabeled, closed]
-env:
- PR_NUMBER: ${{ github.event.number }}
- BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
-
-permissions:
- pull-requests: write
- issues: write
-
-jobs:
- create-review-cypress-app:
- if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-review-cypress-app' }}
- runs-on: ubuntu-latest
-
- steps:
- - name: Create deployment
- id: create-deployment
- run: |
- export RESPONSE=$(curl --request POST \
- --url https://api.render.com/v1/services \
- --header 'accept: application/json' \
- --header 'content-type: application/json' \
- --header 'Authorization: Bearer ${{ secrets.RENDER_API_KEY }}' \
- --data '
- {
- "autoDeploy": "yes",
- "branch": "${{ env.BRANCH_NAME }}",
- "name": "ToolJet PR CYPRESS #${{ env.PR_NUMBER }}",
- "notifyOnFail": "default",
- "ownerId": "tea-caeo4bj19n072h3dddc0",
- "repo": "${{ github.event.pull_request.head.repo.git_url }}",
- "slug": "tooljet-pr-cypress-${{ env.PR_NUMBER }}",
- "suspended": "not_suspended",
- "suspenders": [],
- "type": "web_service",
- "envVars": [
- {
- "key": "PG_HOST",
- "value": "${{ secrets.RENDER_PG_HOST }}"
- },
- {
- "key": "PG_PORT",
- "value": "5432"
- },
- {
- "key": "PG_USER",
- "value": "${{ secrets.RENDER_PG_USER }}"
- },
- {
- "key": "PG_PASS",
- "value": "${{ secrets.RENDER_PG_PASS }}"
- },
- {
- "key": "PG_DB",
- "value": "${{ env.PR_NUMBER }}_cypress"
- },
- {
- "key": "ENABLE_TOOLJET_DB",
- "value": "true"
- },
- {
- "key": "TOOLJET_DB",
- "value": "${{ env.PR_NUMBER }}_cypress"
- },
- {
- "key": "TOOLJET_DB_HOST",
- "value": "${{ secrets.RENDER_PG_HOST }}"
- },
- {
- "key": "TOOLJET_DB_USER",
- "value": "${{ secrets.RENDER_PG_USER }}"
- },
- {
- "key": "TOOLJET_DB_PASS",
- "value": "${{ secrets.RENDER_PG_PASS }}"
- },
- {
- "key": "TOOLJET_DB_PORT",
- "value": "5432"
- },
- {
- "key": "PGRST_DB_URI",
- "value": "postgres://${{ secrets.RENDER_PG_USER }}:${{ secrets.RENDER_PG_PASS }}@${{ secrets.RENDER_PG_HOST }}/${{ env.PR_NUMBER }}_cypress"
- },
- {
- "key": "PGRST_HOST",
- "value": "127.0.0.1:3000"
- },
- {
- "key": "PGRST_JWT_SECRET",
- "value": "r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj"
- },
- {
- "key": "PGRST_LOG_LEVEL",
- "value": "info"
- },
- {
- "key": "PORT",
- "value": "80"
- },
- {
- "key": "TOOLJET_HOST",
- "value": "https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com"
- },
- {
- "key": "DISABLE_TOOLJET_TELEMETRY",
- "value": "true"
- },
- {
- "key": "SMTP_ADDRESS",
- "value": "smtp.mailtrap.io"
- },
- {
- "key": "SMTP_DOMAIN",
- "value": "smtp.mailtrap.io"
- },
- {
- "key": "SMTP_PORT",
- "value": "2525"
- },
- {
- "key": "SMTP_USERNAME",
- "value": "${{ secrets.RENDER_SMTP_USERNAME }}"
- },
- {
- "key": "SMTP_PASSWORD",
- "value": "${{ secrets.RENDER_SMTP_PASSWORD }}"
- },
- {
- "key": "ENABLE_MARKETPLACE_FEATURE",
- "value": "true"
- },
- {
- "key": "SSO_GIT_OAUTH2_CLIENT_ID",
- "value": "dummy"
- },
- {
- "key": "SSO_GIT_OAUTH2_CLIENT_SECRET",
- "value": "dummy"
- },
- {
- "key": "SSO_GIT_OAUTH2_HOST",
- "value": "dummy"
- },
- {
- "key": "SSO_GOOGLE_OAUTH2_CLIENT_ID",
- "value": "dummy"
- }
- ],
- "serviceDetails": {
- "disk": null,
- "env": "docker",
- "envSpecificDetails": {
- "dockerCommand": "",
- "dockerContext": "./",
- "dockerfilePath": "./docker/preview.Dockerfile"
- },
- "healthCheckPath": "/api/health",
- "numInstances": 1,
- "openPorts": [{
- "port": 80,
- "protocol": "TCP"
- }],
- "plan": "pro",
- "pullRequestPreviewsEnabled": "no",
- "region": "oregon",
- "url": "https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com"
- }
- }')
-
- echo "response: $RESPONSE"
- export SERVICE_ID=$(echo $RESPONSE | jq -r '.service.id')
- echo "SERVICE_ID=$SERVICE_ID" >> $GITHUB_ENV
-
- - name: Comment deployment URL
- uses: actions/github-script@v5
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- github.rest.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: 'Deployment: https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com \n Dashboard: https://dashboard.render.com/web/${{ env.SERVICE_ID }}'
- })
-
- - uses: actions/github-script@v6
- with:
- script: |
- try {
- await github.rest.issues.removeLabel({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: 'create-review-cypress-app'
- })
- } catch (e) {
- console.log(e)
- }
-
- await github.rest.issues.addLabels({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: ['active-review-cypress-app']
- })
-
- destroy-review-cypress-app:
- if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-review-cypress-app') || github.event.action == 'closed' }}
- runs-on: ubuntu-latest
-
- steps:
- - name: Delete service
- run: |
- export SERVICE_ID=$(curl --request GET \
- --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20CYPRESS%20%23${{ env.PR_NUMBER }}&limit=1' \
- --header 'accept: application/json' \
- --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \
- jq -r '.[0].service.id')
-
- curl --request DELETE \
- --url https://api.render.com/v1/services/$SERVICE_ID \
- --header 'accept: application/json' \
- --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}'
-
- - uses: actions/github-script@v6
- with:
- script: |
- try {
- await github.rest.issues.removeLabel({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: 'destroy-review-cypress-app'
- })
- } catch (e) {
- console.log(e)
- }
-
- try {
- await github.rest.issues.removeLabel({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: 'suspend-review-cypress-app'
- })
- } catch (e) {
- console.log(e)
- }
-
- try {
- await github.rest.issues.removeLabel({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: 'active-review-cypress-app'
- })
- } catch (e) {
- console.log(e)
- }
-
- - name: Install PostgreSQL client
- run: |
- sudo apt update
- sudo apt install postgresql-client -y
-
- - name: Wait after installing PostgreSQL
- run: sleep 25
-
- - name: Drop PostgreSQL PR database
- env:
- PGHOST: ${{ secrets.RENDER_DS_PG_HOST }}
- PGPORT: 5432
- PGUSER: ${{ secrets.RENDER_DS_PG_USER }}
- PGDATABASE: ${{ env.PR_NUMBER }}_cypress
- run: |
- PGPASSWORD=${{ secrets.RENDER_DS_PG_PASS }} psql -h $PGHOST -p $PGPORT -U $PGUSER -d postgres -c "drop database \"$PGDATABASE\" ;"
-
- suspend-review-cypress-app:
- if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-cypress-app' }}
- runs-on: ubuntu-latest
-
- steps:
- - name: Suspend service
- run: |
- export SERVICE_ID=$(curl --request GET \
- --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20CYPRESS%20%23${{ env.PR_NUMBER }}&limit=1' \
- --header 'accept: application/json' \
- --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \
- jq -r '.[0].service.id')
-
- curl --request POST \
- --url https://api.render.com/v1/services/$SERVICE_ID/suspend \
- --header 'accept: application/json' \
- --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}'
-
- - uses: actions/github-script@v6
- with:
- script: |
- try {
- await github.rest.issues.removeLabel({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: 'active-review-cypress-app'
- })
- } catch (e) {
- console.log(e)
- }
-
- resume-review-cypress-app:
- if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-review-cypress-app' }}
- runs-on: ubuntu-latest
-
- steps:
- - name: Resume service
- run: |
- export SERVICE_ID=$(curl --request GET \
- --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20CYPRESS%20%23${{ env.PR_NUMBER }}&limit=1' \
- --header 'accept: application/json' \
- --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \
- jq -r '.[0].service.id')
-
- curl --request POST \
- --url https://api.render.com/v1/services/$SERVICE_ID/resume \
- --header 'accept: application/json' \
- --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}'
-
- - uses: actions/github-script@v6
- with:
- script: |
- await github.rest.issues.addLabels({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: ['active-review-cypress-app']
- })
-
- try {
- await github.rest.issues.removeLabel({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- name: 'suspend-review-cypress-app'
- })
- } catch (e) {
- console.log(e)
- }
diff --git a/.github/workflows/render-suspend-labeler-pro.yml b/.github/workflows/render-suspend-labeler-pro.yml
deleted file mode 100644
index b35323aa5d..0000000000
--- a/.github/workflows/render-suspend-labeler-pro.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-name: Label for stale render cypress app deploy
-on:
- workflow_dispatch:
- schedule:
- - cron: '0 0 * * *'
-
-permissions:
- issues: write
-
-jobs:
- label-stale-deploys:
- runs-on: ubuntu-latest
- permissions:
- pull-requests: write
- steps:
- - uses: akshaysasidrn/stale-label-fetch@v1.1
- id: stale-label
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- stale-label: 'active-review-cypress-app'
- stale-time: '86400'
- type: 'pull_request'
- - name: Get stale numbers
- run: echo "Matched PR numbers - ${{ steps.stale-label.outputs.stale-numbers }}"
- - name: Add suspend label
- uses: actions/github-script@v6
- env:
- STALE_NUMBERS: ${{ steps.stale-label.outputs.stale-numbers }}
- with:
- github-token: ${{ secrets.TJ_BOT_PAT }}
- script: |
- if (!process.env.STALE_NUMBERS) return
-
- const prNumbers = process.env.STALE_NUMBERS.split(",")
-
- console.log(`Adding suspend labels for: ${prNumbers}`)
-
- for (const prNumber of prNumbers) {
- github.rest.issues.addLabels({
- issue_number: prNumber,
- owner: context.repo.owner,
- repo: context.repo.repo,
- labels: ['suspend-review-cypress-app']
- })
- }