From d93fe89c12942773ca894e129fcb227bd9d4ec7e Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 24 Nov 2025 10:48:51 +0100 Subject: [PATCH] :paperclip: Backport CI github workflog from develop --- .github/workflows/tests.yml | 344 +++++++++++++++++++++++++----------- 1 file changed, 243 insertions(+), 101 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 421b1f2598..4222373900 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -name: "CI: Tests" +name: "CI" defaults: run: @@ -16,125 +16,140 @@ on: - develop - staging +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + jobs: - # lint: - # name: "Code Linter" - # runs-on: ubuntu-24.04 - # container: penpotapp/devenv:latest + lint: + name: "Code Linter" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 + steps: + - name: Checkout repository + uses: actions/checkout@v4 - # - name: Check clojure code format - # run: | - # corepack enable; - # corepack install; - # yarn install - # yarn run fmt:clj:check + - name: Check clojure code format + run: | + corepack enable; + corepack install; + yarn install + yarn run fmt:clj:check - # test-common: - # name: "Common Tests" - # runs-on: ubuntu-24.04 - # container: penpotapp/devenv:latest + test-common: + name: "Common Tests" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 + steps: + - name: Checkout repository + uses: actions/checkout@v4 - # - name: Run tests on JVM - # working-directory: ./common - # run: | - # clojure -M:dev:test + - name: Run tests on JVM + working-directory: ./common + run: | + clojure -M:dev:test - # - name: Run tests on NODE - # working-directory: ./common - # run: | - # corepack enable; - # corepack install; - # yarn install; - # yarn run test; + - name: Run tests on NODE + working-directory: ./common + run: | + corepack enable; + corepack install; + yarn install; + yarn run test; - # test-frontend: - # name: "Frontend Tests" - # runs-on: ubuntu-24.04 - # container: penpotapp/devenv:latest + test-frontend: + name: "Frontend Tests" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 + steps: + - name: Checkout repository + uses: actions/checkout@v4 - # - name: Unit Tests - # working-directory: ./frontend - # run: | - # corepack enable; - # corepack install; - # yarn install; - # yarn run test; + - name: Unit Tests + working-directory: ./frontend + run: | + corepack enable; + corepack install; + yarn install; + yarn run test; - # - name: Component Tests - # working-directory: ./frontend - # run: | - # yarn run playwright install chromium --with-deps; - # yarn run build:storybook + - name: Component Tests + working-directory: ./frontend + run: | + yarn run playwright install chromium --with-deps; + yarn run build:storybook - # npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \ - # "npx http-server storybook-static --port 6006 --silent" \ - # "npx wait-on tcp:6006 && yarn test:storybook" + npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \ + "npx http-server storybook-static --port 6006 --silent" \ + "npx wait-on tcp:6006 && yarn test:storybook" - # - name: Check SCSS Format - # working-directory: ./frontend - # run: | - # yarn run lint:scss; + - name: Check SCSS Format + working-directory: ./frontend + run: | + yarn run lint:scss; - # test-backend: - # name: "Backend Tests" - # runs-on: ubuntu-24.04 - # container: penpotapp/devenv:latest + test-backend: + name: "Backend Tests" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest - # services: - # postgres: - # image: postgres:17 - # # Provide the password for postgres - # env: - # POSTGRES_USER: penpot_test - # POSTGRES_PASSWORD: penpot_test - # POSTGRES_DB: penpot_test + services: + postgres: + image: postgres:17 + # Provide the password for postgres + env: + POSTGRES_USER: penpot_test + POSTGRES_PASSWORD: penpot_test + POSTGRES_DB: penpot_test - # # Set health checks to wait until postgres has started - # options: >- - # --health-cmd pg_isready - # --health-interval 10s - # --health-timeout 5s - # --health-retries 5 + # Set health checks to wait until postgres has started + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 - # redis: - # image: valkey/valkey:9 + redis: + image: valkey/valkey:9 - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 + steps: + - name: Checkout repository + uses: actions/checkout@v4 - # test-library: - # name: "Library Tests" - # runs-on: ubuntu-24.04 - # container: penpotapp/devenv:latest + - name: Run tests + working-directory: ./backend + env: + PENPOT_TEST_DATABASE_URI: "postgresql://postgres/penpot_test" + PENPOT_TEST_DATABASE_USERNAME: penpot_test + PENPOT_TEST_DATABASE_PASSWORD: penpot_test + PENPOT_TEST_REDIS_URI: "redis://redis/1" - # steps: - # - name: Checkout repository - # uses: actions/checkout@v4 + run: | + clojure -M:dev:test --reporter kaocha.report/documentation - # - name: Run tests - # working-directory: ./library - # run: | - # corepack enable; - # corepack install; - # yarn install; - # yarn run build:bundle; - # yarn run test; + test-library: + name: "Library Tests" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest - test-integration: - name: "Integration Tests" + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Run tests + working-directory: ./library + run: | + corepack enable; + corepack install; + yarn install; + yarn run build:bundle; + yarn run test; + + build-integration: + name: "Build Integration Bundle" runs-on: ubuntu-24.04 container: penpotapp/devenv:latest @@ -157,17 +172,144 @@ jobs: run: | ./build release + - name: Store Bundle Cache + uses: actions/cache@v4 + with: + key: "integration-bundle-${{ github.sha }}" + path: frontend/resources/public + + test-integration-1: + name: "Integration Tests 1/4" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest + needs: build-integration + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Restore Cache + uses: actions/cache/restore@v4 + with: + key: "integration-bundle-${{ github.sha }}" + path: frontend/resources/public + - name: Run Tests working-directory: ./frontend run: | - yarn run playwright install chromium --with-deps - yarn run test:e2e -x --workers=1 --reporter=line + corepack enable; + corepack install; + yarn install; + yarn run playwright install chromium --with-deps; + yarn run test:e2e -x --workers=2 --reporter=list --shard="1/4"; - name: Upload test result uses: actions/upload-artifact@v4 if: always() with: - name: integration-tests-result + name: integration-tests-result-1 + path: frontend/test-results/ + overwrite: true + retention-days: 3 + + test-integration-2: + name: "Integration Tests 2/4" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest + needs: build-integration + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Restore Cache + uses: actions/cache/restore@v4 + with: + key: "integration-bundle-${{ github.sha }}" + path: frontend/resources/public + + - name: Run Tests + working-directory: ./frontend + run: | + corepack enable; + corepack install; + yarn install; + yarn run playwright install chromium --with-deps; + yarn run test:e2e -x --workers=2 --reporter=list --shard "2/4"; + + - name: Upload test result + uses: actions/upload-artifact@v4 + if: always() + with: + name: integration-tests-result-2 + path: frontend/test-results/ + overwrite: true + retention-days: 3 + + test-integration-3: + name: "Integration Tests 3/4" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest + needs: build-integration + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Restore Cache + uses: actions/cache/restore@v4 + with: + key: "integration-bundle-${{ github.sha }}" + path: frontend/resources/public + + - name: Run Tests + working-directory: ./frontend + run: | + corepack enable; + corepack install; + yarn install; + yarn run playwright install chromium --with-deps; + yarn run test:e2e -x --workers=2 --reporter=list --shard "3/4"; + + - name: Upload test result + uses: actions/upload-artifact@v4 + if: always() + with: + name: integration-tests-result-3 + path: frontend/test-results/ + overwrite: true + retention-days: 3 + + test-integration-4: + name: "Integration Tests 3/4" + runs-on: ubuntu-24.04 + container: penpotapp/devenv:latest + needs: build-integration + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Restore Cache + uses: actions/cache/restore@v4 + with: + key: "integration-bundle-${{ github.sha }}" + path: frontend/resources/public + + - name: Run Tests + working-directory: ./frontend + run: | + corepack enable; + corepack install; + yarn install; + yarn run playwright install chromium --with-deps; + yarn run test:e2e -x --workers=2 --reporter=list --shard "4/4"; + + - name: Upload test result + uses: actions/upload-artifact@v4 + if: always() + with: + name: integration-tests-result-4 path: frontend/test-results/ overwrite: true retention-days: 3