ToolJet/.github/workflows/code-coverage.yml
2026-03-30 21:32:40 +05:30

138 lines
4.4 KiB
YAML

name: Cypress Code-Coverage
on:
pull_request:
types: [labeled, unlabeled, synchronize, closed]
workflow_dispatch:
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
jobs:
Cypress-Code-Coverage:
name: Code coverage
runs-on: ubuntu-22.04
if: >-
(
(github.event.action == 'labeled' && github.event.label.name == 'check-coverage')
|| (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'check-coverage'))
)
&& github.event.pull_request.head.repo.full_name == github.repository
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18.18.2
- name: Set up Docker
uses: docker-practice/actions-setup-docker@master
- name: Run PostgreSQL Database Docker Container
run: |
sudo docker network create tooljet
sudo docker run -d --name postgres --network tooljet \
-p 5432:5432 \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PORT=5432 \
postgres:13
- name: Checkout
uses: actions/checkout@v4
- 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 "NODE_ENV=development" >> .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: Wait for database seed to settle
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: PostgREST 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: Install Cypress
working-directory: ./cypress-tests
run: npm install
- name: Run Cypress tests
working-directory: ./cypress-tests
run: npm run cy:run
- name: Debugging
if: always()
run: |
ls -R cypress-tests
ls -R /home/runner/work/ToolJet/ToolJet/cypress-tests
cat /home/runner/work/ToolJet/ToolJet/cypress-tests/.nyc_output/out.json
- name: Upload Coverage Report
uses: actions/upload-artifact@v4
if: always()
with:
name: coverage
path: cypress-tests/coverage