Skip to content

feat: improve error and loading handling #5169

feat: improve error and loading handling

feat: improve error and loading handling #5169

Workflow file for this run

name: Test
on:
push:
branches: [main, release]
pull_request:
jobs:
backend-build:
name: Build backend 🏗️
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Build backend
run: ./gradlew bootJar
- name: Tar App build
run: tar -czf ~/backend-app.tgz ./backend/app/build
- name: Tar Data build
run: tar -czf ~/backend-data.tgz ./backend/data/build
- name: Tar Testing build
run: tar -czf ~/backend-testing.tgz ./backend/testing/build
- name: Tar Deployment build
run: tar -czf ~/backend-development.tgz ./backend/development/build
- uses: actions/upload-artifact@v3
if: always()
with:
name: backend
path: |
~/backend-app.tgz
~/backend-data.tgz
~/backend-testing.tgz
~/backend-development.tgz
backend-test:
name: BT ‍🔎
needs: [backend-build]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
command:
[
"server-app:runContextRecreatingTests",
"server-app:runStandardTests",
"server-app:runWebsocketTests",
"ee-test:test",
"data:test",
]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Download backend build result
uses: actions/download-artifact@v3
with:
name: backend
path: ~/
- name: Untar it
run: |
tar -xzf ~/backend-app.tgz ./backend/app/build
tar -xzf ~/backend-data.tgz ./backend/data/build
tar -xzf ~/backend-testing.tgz ./backend/testing/build
tar -xzf ~/backend-development.tgz ./backend/development/build
- name: Run backend tests
run: ./gradlew ${{ matrix.command }}
env:
SKIP_SERVER_BUILD: true
- name: Get report name
id: reportName
run: |
reportName=${{ matrix.command }}
echo "reportName=${reportName//\:/_}" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
if: always()
with:
name: backend_test_reports_${{ steps.version.outputs.reportName }}
path: |
./**/build/reports/**/*
e2e:
needs: [frontend-build, backend-build, e2e-install-deps]
runs-on: ubuntu-latest
name: E2E testing ‍🔎
strategy:
fail-fast: false
matrix:
total_jobs: [15]
job_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Download backend build result
uses: actions/download-artifact@v3
with:
name: backend
path: ~/
- name: Untar it
run: tar -xzf ~/backend-app.tgz ./backend/app/build
- name: Download frontend build result
uses: actions/download-artifact@v3
with:
name: webapp
path: ./webapp/build
- name: Download dependencies
uses: actions/download-artifact@v3
with:
name: e2e_deps
path: ~/
- name: Untar node modules
run: |
tar -xzf ~/node_modules.tgz ./e2e/node_modules
- name: Create cache directory
run: |
mkdir -p ~/.cache
- name: Untar Cypress cache
run: |
tar -xzf ~/cypress_cache.tgz
working-directory: /home/runner/.cache/
- name: Run e2e test
run: ./gradlew runE2e
env:
TOLGEE_API_KEY: ${{secrets.TOLGEE_API_KEY}}
TOLGEE_API_URL: ${{secrets.TOLGEE_API_URL}}
SKIP_WEBAPP_BUILD: true
SKIP_SERVER_BUILD: true
SKIP_INSTALL_E2E_DEPS: true
E2E_TOTAL_JOBS: ${{matrix.total_jobs}}
E2E_JOB_INDEX: ${{matrix.job_index}}
- uses: actions/upload-artifact@v3
if: failure()
with:
name: e2e
path: |
./e2e/cypress/videos/**/*
./e2e/cypress/screenshots/**/*
./e2e/server
- uses: actions/upload-artifact@v3
if: failure()
with:
name: e2e_server_log_${{ matrix.job_index }}
path: |
./e2e/server.log
frontend-build:
name: Build frontend 🏗️
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Build webapp
run: ./gradlew buildWebapp
env:
TOLGEE_API_KEY: ${{secrets.TOLGEE_API_KEY}}
TOLGEE_API_URL: ${{secrets.TOLGEE_API_URL}}
- name: Upload built webapp
uses: actions/upload-artifact@v3
with:
name: webapp
path: webapp/build
frontend-code-check:
name: Frontend static check 🪲
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
working-directory: ./webapp
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Typescript
run: npm run tsc
working-directory: ./webapp
- name: Eslint
run: npm run eslint
working-directory: ./webapp
- name: Keys extraction check
run: npm run check-translations
working-directory: ./webapp
- name: Load newest translations
run: npm run load-translations
working-directory: ./webapp
if: ${{ env.TOLGEE_API_KEY != '' }}
env:
TOLGEE_API_KEY: ${{secrets.TOLGEE_API_KEY}}
- name: Check missing translation keys
run: npm run tsc:prod
working-directory: ./webapp
if: ${{ env.TOLGEE_API_KEY != '' }}
env:
TOLGEE_API_KEY: ${{secrets.TOLGEE_API_KEY}}
e2e-code-checks:
name: E2E Static Check 🪲
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Install dependencies
run: npm ci
working-directory: ./e2e
- name: Eslint
run: npm run eslint
working-directory: ./e2e
- name: Typecheck
run: npm run tsc
working-directory: ./e2e
e2e-install-deps:
name: Install E2E dependencies ⬇️
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache node modules
uses: actions/cache@v3
with:
path: ~/.npm
key: cache-node-modules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
- name: Install dependencies
run: npm ci
working-directory: ./e2e
- name: Tar node modules
run: |
tar -czf ~/node_modules.tgz ./e2e/node_modules
- name: Tar Cypress cache
run: |
tar -czf ~/cypress_cache.tgz ./Cypress
working-directory: /home/runner/.cache/
- uses: actions/upload-artifact@v3
if: always()
with:
name: e2e_deps
path: |
~/node_modules.tgz
~/cypress_cache.tgz
backend-code-checks:
name: Ktlint 🪲
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
java-version: 17
distribution: adopt
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "16.x"
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
- name: Run ktlint
run: ./gradlew ktlint